Skia Decoder ausfällt Remote-Stream dekodieren
Frage
Ich versuche, einen Remote-Stream eines JPEG-Bildes zu öffnen und es in ein Bitmap-Objekt konvertieren:
BitmapFactory.decodeStream(
new URL("http://some.url.to/source/image.jpg")
.openStream());
Der Decoder gibt null zurück, und in den Protokollen ich die folgende Meldung:
DEBUG/skia(xxxx): --- decoder->decode returned false
Hinweis:
1. die Inhaltslänge nicht Null ist und der Inhaltstyp ist image/jpeg
2. Wenn ich die URL in Browser öffne ich das Bild sehen kann.
Was ist, dass ich hier bin fehlt?
Bitte Hilfe. Danke.
Lösung 2
scheint es ein Problem mit dem Strom war und wie es Android behandelt; der Patch in diesem Bugreport das Problem für nun gelöst.
Andere Tipps
Die Lösung in android Fehler bereitgestellt n ° 6066 bestehen in das Überschreiben der Standardfilterinput und dann an die BitmapFactory senden.
static class FlushedInputStream extends FilterInputStream {
public FlushedInputStream(InputStream inputStream) {
super(inputStream);
}
@Override
public long skip(long n) throws IOException {
long totalBytesSkipped = 0L;
while (totalBytesSkipped < n) {
long bytesSkipped = in.skip(n - totalBytesSkipped);
if (bytesSkipped == 0L) {
int byteValue = read();
if (byteValue < 0) {
break; // we reached EOF
} else {
bytesSkipped = 1; // we read one byte
}
}
totalBytesSkipped += bytesSkipped;
}
return totalBytesSkipped;
}
}
und verwenden Sie dann die decodeStream Funktion:
Bitmap bitmap = BitmapFactory.decodeStream(new FlushedInputStream(inputStream));
Die andere Lösung, die ich gefunden habe, ist, einfach eine BufferedInputStream zu th BitmapFactory zu geben:
Bitmap bitmap = BitmapFactory.decodeStream(new BufferedInputStream(inputStream));
Diese beiden Lösungen sollten es tun.
android Fehler No.6066 Weitere Informationen finden Sie in den Bug-Report Kommentare zu finden >Für mich ist das Problem mit der Art der Farbe des Bildes: Ihr Bild in Farbe = CYMK nicht in RGB
Ich habe eine Bibliothek gefunden, die Bilder, auf denen Android SKIA nicht öffnen kann. Es kann für bestimmte Anwendungsfälle nützlich sein:
https://github.com/suckgamony/RapidDecoder
Für mich löste es das Problem, da ich nicht viele Bilder bei Laden bin einmal und viele Bilder, die ich laden ICC-Profil haben. Ich habe nicht versucht, es mit einigen gemeinsamen Bibliotheken wie Picasso oder Glide zu integrieren.