I am trying to open a remote Stream of a JPEG image and convert it into a Bitmap object:
BitmapFactory.decodeStream(
new URL("http://some.url.to/source/image.jpg")
.openStream());
The decoder returns null and in the logs I get the following message:
DEBUG/skia(xxxx): --- decoder->decode returned false
Note:
1. the content length is non-zero and content type is image/jpeg
2. When I open the URL in browser I can see the image.
What is that I am missing here?
Please help. Thanks.
seems there was some problem with the stream and the way android handled it; the patch in this bug report solved the problem for now.
For me the problem is with type of color of image: your image are in color= CYMK not in RGB
The solution provided in android bug n°6066 consist in overriding the std FilterInputStream and then send it to the BitmapFactory.
and then use the decodeStream function:
The other solution i've found is to simply give a BufferedInputStream to th BitmapFactory:
These two solutions should do the trick.
More information can be found in the bug report comments : android bug no.6066
I have found a library, which can open images on which Android SKIA fails. It can be useful for certain usecases:
https://github.com/suckgamony/RapidDecoder
For me it solved the problem as I am not loading many images at once and lot of images I load have ICC profile. I haven't tried integrating it with some common libraries like Picasso or Glide.