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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top