When I try to load some specific images that are somehow distorted I get the below error and then my app crashes:
JNI DETECTED ERROR IN APPLICATION: JNI NewFloatArray called with pending exception java.lang.IllegalArgumentException: Parameter d must be in the range [0..1], was 10.35546875
java_vm_ext.cc:579] at void android.graphics.ColorSpace$Rgb$TransferParameters.<init>(double, double, double, double, double, double, double) (ColorSpace.java:2195)
java_vm_ext.cc:579] at android.graphics.Bitmap android.graphics.BitmapFactory.nativeDecodeStream(java.io.InputStream, byte[], android.graphics.Rect, android.graphics.BitmapFactory$Options, long, long) (BitmapFactory.java:-2)
java_vm_ext.cc:579] at android.graphics.Bitmap android.graphics.BitmapFactory.decodeStreamInternal(java.io.InputStream, android.graphics.Rect, android.graphics.BitmapFactory$Options) (BitmapFactory.java:791)
java_vm_ext.cc:579] at android.graphics.Bitmap android.graphics.BitmapFactory.decodeStream(java.io.InputStream, android.graphics.Rect, android.graphics.BitmapFactory$Options) (BitmapFactory.java:766)
java_vm_ext.cc:579] at com.facebook.imageutils.ImageMetaData com.facebook.imageutils.BitmapUtil.decodeDimensionsAndColorSpace(java.io.InputStream) (BitmapUtil.java:144)
java_vm_ext.cc:579] at com.facebook.imageutils.ImageMetaData com.facebook.imagepipeline.image.EncodedImage.readImageMetaData() (EncodedImage.java:391)
java_vm_ext.cc:579] at void com.facebook.imagepipeline.image.EncodedImage.parseMetaData() (EncodedImage.java:356)
java_vm_ext.cc:579] at void com.facebook.imagepipeline.producers.NetworkFetchProducer.notifyConsumer(com.facebook.common.memory.PooledByteBufferOutputStream, int, com.facebook.imagepipeline.common.BytesRange, com.facebook.imagepipeline.producers.Consumer) (NetworkFetchProducer.java:178)
java_vm_ext.cc:579] at void com.facebook.imagepipeline.producers.NetworkFetchProducer.handleFinalResult(com.facebook.common.memory.PooledByteBufferOutputStream, com.facebook.imagepipeline.producers.FetchState) (NetworkFetchProducer.java:160)
java_vm_ext.cc:579] at void com.facebook.imagepipeline.producers.NetworkFetchProducer.onResponse(com.facebook.imagepipeline.producers.FetchState, java.io.InputStream, int) (NetworkFetchProducer.java:112)
java_vm_ext.cc:579] at void com.facebook.imagepipeline.producers.NetworkFetchProducer$1.onResponse(java.io.InputStream, int) (NetworkFetchProducer.java:73)
java_vm_ext.cc:579] at void com.facebook.imagepipeline.producers.HttpUrlConnectionNetworkFetcher.fetchSync(com.facebook.imagepipeline.producers.HttpUrlConnectionNetworkFetcher$HttpUrlConnectionNetworkFetchState, com.facebook.imagepipeline.producers.NetworkFetcher$Callback) (HttpUrlConnectionNetworkFetcher.java:118)
java_vm_ext.cc:579] at void com.facebook.imagepipeline.producers.HttpUrlConnectionNetworkFetcher$1.run() (HttpUrlConnectionNetworkFetcher.java:94)
java_vm_ext.cc:579] at java.lang.Object java.util.concurrent.Executors$RunnableAdapter.call() (Executors.java:462)
java_vm_ext.cc:579] at void java.util.concurrent.FutureTask.run() (FutureTask.java:266)
java_vm_ext.cc:579] at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1167)
java_vm_ext.cc:579] at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:641)
java_vm_ext.cc:579] at void java.lang.Thread.run() (Thread.java:920)
java_vm_ext.cc:579]
java_vm_ext.cc:579] in call to NewFloatArray
java_vm_ext.cc:579] from android.graphics.Bitmap android.graphics.BitmapFactory.nativeDecodeStream(java.io.InputStream, byte[], android.graphics.Rect, android.graphics.BitmapFactory$Options, long, long)
This is how I try to load the image from URL:
public static void loadResizeImage(SimpleDraweeView imageView, String url,
int widthDP, int heightDP)
{
ImageRequest request = ImageRequestBuilder
.newBuilderWithSource(Uri.parse(url))
.setResizeOptions(new ResizeOptions(widthDP, heightDP))
.setLocalThumbnailPreviewsEnabled(false)
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(imageView.getController())
.build();
try
{
imageView.setController(controller);
}
catch (IllegalStateException e){
e.printStackTrace();
}
}
This is the image I try to load and it crashes: image
How can I catch this error so my app won't crash?
I read similar questions but I couldn't find any working solution.