From 245160976ccbc5b79288eaf656b5b71b24cd480f Mon Sep 17 00:00:00 2001 From: orenklein Date: Wed, 7 Jun 2017 11:15:31 +0300 Subject: [PATCH 1/2] Update getSize to use encoded image --- .../modules/image/ImageLoaderModule.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java index 92ab18ca5e3804..afc60bf4a7a460 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java @@ -21,7 +21,8 @@ import com.facebook.datasource.DataSubscriber; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.imagepipeline.core.ImagePipeline; -import com.facebook.imagepipeline.image.CloseableImage; +import com.facebook.imagepipeline.image.EncodedImage; +import com.facebook.imagepipeline.memory.PooledByteBuffer; import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; import com.facebook.react.bridge.Arguments; @@ -81,22 +82,23 @@ public void getSize( Uri uri = Uri.parse(uriString); ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri).build(); - DataSource> dataSource = - Fresco.getImagePipeline().fetchDecodedImage(request, mCallerContext); + DataSource> dataSource = + Fresco.getImagePipeline().fetchEncodedImage(request, mCallerContext); - DataSubscriber> dataSubscriber = - new BaseDataSubscriber>() { + DataSubscriber> dataSubscriber = + new BaseDataSubscriber>() { @Override protected void onNewResultImpl( - DataSource> dataSource) { + DataSource> dataSource) { if (!dataSource.isFinished()) { return; } - CloseableReference ref = dataSource.getResult(); + CloseableReference ref = dataSource.getResult(); if (ref != null) { + EncodedImage image = ref.get(); try { - CloseableImage image = ref.get(); - + image.parseMetaData(); + WritableMap sizes = Arguments.createMap(); sizes.putInt("width", image.getWidth()); sizes.putInt("height", image.getHeight()); @@ -106,6 +108,7 @@ protected void onNewResultImpl( promise.reject(ERROR_GET_SIZE_FAILURE, e); } finally { CloseableReference.closeSafely(ref); + image.close(); } } else { promise.reject(ERROR_GET_SIZE_FAILURE); @@ -113,7 +116,7 @@ protected void onNewResultImpl( } @Override - protected void onFailureImpl(DataSource> dataSource) { + protected void onFailureImpl(DataSource> dataSource) { promise.reject(ERROR_GET_SIZE_FAILURE, dataSource.getFailureCause()); } }; From c5f029204f72ed2b18d078439a574691ae713791 Mon Sep 17 00:00:00 2001 From: orenklein Date: Fri, 9 Jun 2017 14:59:03 +0300 Subject: [PATCH 2/2] Android Image.getSize fix encoded image instantiate --- .../com/facebook/react/modules/image/ImageLoaderModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java index afc60bf4a7a460..296bc9d9e47131 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java @@ -95,7 +95,7 @@ protected void onNewResultImpl( } CloseableReference ref = dataSource.getResult(); if (ref != null) { - EncodedImage image = ref.get(); + EncodedImage image = new EncodedImage(ref); try { image.parseMetaData();