From 3f49787fe20c0cd9f4dfb71711dabb0a4dee3bad Mon Sep 17 00:00:00 2001 From: katout Date: Wed, 17 Oct 2018 20:42:23 +0900 Subject: [PATCH 1/6] add resize quality --- .../imagepicker/ImagePickerDelegate.java | 3 +- .../plugins/imagepicker/ImageResizer.java | 10 ++-- .../ios/Classes/ImagePickerPlugin.m | 13 +++-- packages/image_picker/lib/image_picker.dart | 2 + .../image_picker/test/image_picker_test.dart | 50 +++++++++++++++++++ 5 files changed, 70 insertions(+), 8 deletions(-) diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java index c4a7d7ecfa53..67aa70b310fb 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java @@ -450,8 +450,9 @@ private void handleImageResult(String path) { if (pendingResult != null) { Double maxWidth = methodCall.argument("maxWidth"); Double maxHeight = methodCall.argument("maxHeight"); + Double resizeQuality = methodCall.argument("resizeQuality"); - String finalImagePath = imageResizer.resizeImageIfNeeded(path, maxWidth, maxHeight); + String finalImagePath = imageResizer.resizeImageIfNeeded(path, maxWidth, maxHeight, resizeQuality); finishWithSuccess(finalImagePath); } else { throw new IllegalStateException("Received image from picker that was not requested"); diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImageResizer.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImageResizer.java index 25feba7611d1..9881d4fb609b 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImageResizer.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImageResizer.java @@ -26,7 +26,7 @@ class ImageResizer { * *

If no resizing is needed, returns the path for the original image. */ - String resizeImageIfNeeded(String imagePath, Double maxWidth, Double maxHeight) { + String resizeImageIfNeeded(String imagePath, Double maxWidth, Double maxHeight, Double resizeQuality) { boolean shouldScale = maxWidth != null || maxHeight != null; if (!shouldScale) { @@ -34,7 +34,7 @@ String resizeImageIfNeeded(String imagePath, Double maxWidth, Double maxHeight) } try { - File scaledImage = resizedImage(imagePath, maxWidth, maxHeight); + File scaledImage = resizedImage(imagePath, maxWidth, maxHeight, resizeQuality); exifDataCopier.copyExif(imagePath, scaledImage.getPath()); return scaledImage.getPath(); @@ -43,7 +43,7 @@ String resizeImageIfNeeded(String imagePath, Double maxWidth, Double maxHeight) } } - private File resizedImage(String path, Double maxWidth, Double maxHeight) throws IOException { + private File resizedImage(String path, Double maxWidth, Double maxHeight, Double resizeQuality) throws IOException { Bitmap bmp = BitmapFactory.decodeFile(path); double originalWidth = bmp.getWidth() * 1.0; double originalHeight = bmp.getHeight() * 1.0; @@ -58,6 +58,8 @@ private File resizedImage(String path, Double maxWidth, Double maxHeight) throws boolean shouldDownscaleHeight = hasMaxHeight && maxHeight < originalHeight; boolean shouldDownscale = shouldDownscaleWidth || shouldDownscaleHeight; + resizeQuality = resizeQuality != null ? resizeQuality : new Double(1.0); + if (shouldDownscale) { double downscaledWidth = (height / originalHeight) * originalWidth; double downscaledHeight = (width / originalWidth) * originalHeight; @@ -85,7 +87,7 @@ private File resizedImage(String path, Double maxWidth, Double maxHeight) throws Bitmap scaledBmp = Bitmap.createScaledBitmap(bmp, width.intValue(), height.intValue(), false); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - scaledBmp.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); + scaledBmp.compress(Bitmap.CompressFormat.JPEG, (int)(resizeQuality * 100), outputStream); String[] pathParts = path.split("/"); String imageName = pathParts[pathParts.length - 1]; diff --git a/packages/image_picker/ios/Classes/ImagePickerPlugin.m b/packages/image_picker/ios/Classes/ImagePickerPlugin.m index 10185776be39..82f2e7dbcf7d 100644 --- a/packages/image_picker/ios/Classes/ImagePickerPlugin.m +++ b/packages/image_picker/ios/Classes/ImagePickerPlugin.m @@ -152,9 +152,10 @@ - (void)imagePickerController:(UIImagePickerController *)picker NSNumber *maxWidth = [_arguments objectForKey:@"maxWidth"]; NSNumber *maxHeight = [_arguments objectForKey:@"maxHeight"]; + NSNumber *resizeQuality = [_arguments objectForKey:@"resizeQuality"]; if (maxWidth != (id)[NSNull null] || maxHeight != (id)[NSNull null]) { - image = [self scaledImage:image maxWidth:maxWidth maxHeight:maxHeight]; + image = [self scaledImage:image maxWidth:maxWidth maxHeight:maxHeight resizeQuality:resizeQuality]; } NSData *data = UIImageJPEGRepresentation(image, 1.0); @@ -201,7 +202,8 @@ - (UIImage *)normalizedImage:(UIImage *)image { - (UIImage *)scaledImage:(UIImage *)image maxWidth:(NSNumber *)maxWidth - maxHeight:(NSNumber *)maxHeight { + maxHeight:(NSNumber *)maxHeight + resizeQuality:(NSNumber *)resizeQuality { double originalWidth = image.size.width; double originalHeight = image.size.height; @@ -240,7 +242,12 @@ - (UIImage *)scaledImage:(UIImage *)image } } - UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, 1.0); + if(resizeQuality == (id)[NSNull null]){ + resizeQuality = [NSNumber numberWithFloat:1.0f]; + } + + + UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, [resizeQuality floatValue]); [image drawInRect:CGRectMake(0, 0, width, height)]; UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); diff --git a/packages/image_picker/lib/image_picker.dart b/packages/image_picker/lib/image_picker.dart index da7847d3ecbf..a3c754360e26 100755 --- a/packages/image_picker/lib/image_picker.dart +++ b/packages/image_picker/lib/image_picker.dart @@ -33,6 +33,7 @@ class ImagePicker { @required ImageSource source, double maxWidth, double maxHeight, + double resizeQuality, }) async { assert(source != null); @@ -50,6 +51,7 @@ class ImagePicker { 'source': source.index, 'maxWidth': maxWidth, 'maxHeight': maxHeight, + 'resizeQuality': resizeQuality, }, ); diff --git a/packages/image_picker/test/image_picker_test.dart b/packages/image_picker/test/image_picker_test.dart index cb6be17dc055..8caba01923f8 100644 --- a/packages/image_picker/test/image_picker_test.dart +++ b/packages/image_picker/test/image_picker_test.dart @@ -34,11 +34,13 @@ void main() { 'source': 0, 'maxWidth': null, 'maxHeight': null, + 'resizeQuality': null, }), isMethodCall('pickImage', arguments: { 'source': 1, 'maxWidth': null, 'maxHeight': null, + 'resizeQuality': null, }), ], ); @@ -59,6 +61,26 @@ void main() { maxWidth: 10.0, maxHeight: 20.0, ); + await ImagePicker.pickImage( + source: ImageSource.camera, + resizeQuality: 0.5, + ); + await ImagePicker.pickImage( + source: ImageSource.camera, + maxWidth: 10.0, + resizeQuality: 0.5, + ); + await ImagePicker.pickImage( + source: ImageSource.camera, + maxHeight: 20.0, + resizeQuality: 0.5, + ); + await ImagePicker.pickImage( + source: ImageSource.camera, + maxWidth: 10.0, + maxHeight: 20.0, + resizeQuality: 0.5, + ); expect( log, @@ -67,21 +89,49 @@ void main() { 'source': 0, 'maxWidth': null, 'maxHeight': null, + 'resizeQuality': null, }), isMethodCall('pickImage', arguments: { 'source': 0, 'maxWidth': 10.0, 'maxHeight': null, + 'resizeQuality': null, }), isMethodCall('pickImage', arguments: { 'source': 0, 'maxWidth': null, 'maxHeight': 10.0, + 'resizeQuality': null, + }), + isMethodCall('pickImage', arguments: { + 'source': 0, + 'maxWidth': 10.0, + 'maxHeight': 20.0, + 'resizeQuality': null, + }), + isMethodCall('pickImage', arguments: { + 'source': 0, + 'maxWidth': null, + 'maxHeight': null, + 'resizeQuality': 0.5, + }), + isMethodCall('pickImage', arguments: { + 'source': 0, + 'maxWidth': 10.0, + 'maxHeight': null, + 'resizeQuality': 0.5, + }), + isMethodCall('pickImage', arguments: { + 'source': 0, + 'maxWidth': null, + 'maxHeight': 20.0, + 'resizeQuality': 0.5, }), isMethodCall('pickImage', arguments: { 'source': 0, 'maxWidth': 10.0, 'maxHeight': 20.0, + 'resizeQuality': 0.5, }), ], ); From 1682aa7a0dd04074381d23547069e9e6aa7bfd51 Mon Sep 17 00:00:00 2001 From: katout Date: Thu, 18 Oct 2018 01:52:26 +0900 Subject: [PATCH 2/6] run format & test --- .../plugins/imagepicker/ImagePickerDelegate.java | 3 ++- .../io/flutter/plugins/imagepicker/ImageResizer.java | 10 ++++++---- .../plugins/imagepicker/ImagePickerDelegateTest.java | 10 ++++++---- .../image_picker/ios/Classes/ImagePickerPlugin.h | 2 +- .../image_picker/ios/Classes/ImagePickerPlugin.m | 12 +++++++----- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java index 67aa70b310fb..fe3979bf9c0c 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java @@ -452,7 +452,8 @@ private void handleImageResult(String path) { Double maxHeight = methodCall.argument("maxHeight"); Double resizeQuality = methodCall.argument("resizeQuality"); - String finalImagePath = imageResizer.resizeImageIfNeeded(path, maxWidth, maxHeight, resizeQuality); + String finalImagePath = + imageResizer.resizeImageIfNeeded(path, maxWidth, maxHeight, resizeQuality); finishWithSuccess(finalImagePath); } else { throw new IllegalStateException("Received image from picker that was not requested"); diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImageResizer.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImageResizer.java index 9881d4fb609b..1fed60f3160d 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImageResizer.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImageResizer.java @@ -26,7 +26,8 @@ class ImageResizer { * *

If no resizing is needed, returns the path for the original image. */ - String resizeImageIfNeeded(String imagePath, Double maxWidth, Double maxHeight, Double resizeQuality) { + String resizeImageIfNeeded( + String imagePath, Double maxWidth, Double maxHeight, Double resizeQuality) { boolean shouldScale = maxWidth != null || maxHeight != null; if (!shouldScale) { @@ -43,7 +44,8 @@ String resizeImageIfNeeded(String imagePath, Double maxWidth, Double maxHeight, } } - private File resizedImage(String path, Double maxWidth, Double maxHeight, Double resizeQuality) throws IOException { + private File resizedImage(String path, Double maxWidth, Double maxHeight, Double resizeQuality) + throws IOException { Bitmap bmp = BitmapFactory.decodeFile(path); double originalWidth = bmp.getWidth() * 1.0; double originalHeight = bmp.getHeight() * 1.0; @@ -58,7 +60,7 @@ private File resizedImage(String path, Double maxWidth, Double maxHeight, Double boolean shouldDownscaleHeight = hasMaxHeight && maxHeight < originalHeight; boolean shouldDownscale = shouldDownscaleWidth || shouldDownscaleHeight; - resizeQuality = resizeQuality != null ? resizeQuality : new Double(1.0); + resizeQuality = resizeQuality != null ? resizeQuality : new Double(1.0); if (shouldDownscale) { double downscaledWidth = (height / originalHeight) * originalWidth; @@ -87,7 +89,7 @@ private File resizedImage(String path, Double maxWidth, Double maxHeight, Double Bitmap scaledBmp = Bitmap.createScaledBitmap(bmp, width.intValue(), height.intValue(), false); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - scaledBmp.compress(Bitmap.CompressFormat.JPEG, (int)(resizeQuality * 100), outputStream); + scaledBmp.compress(Bitmap.CompressFormat.JPEG, (int) (resizeQuality * 100), outputStream); String[] pathParts = path.split("/"); String imageName = pathParts[pathParts.length - 1]; diff --git a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java index 5f560d480660..1e7719afc5fd 100644 --- a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java +++ b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java @@ -26,6 +26,7 @@ public class ImagePickerDelegateTest { private static final double WIDTH = 10.0; private static final double HEIGHT = 10.0; + private static final double QUALITY = 0.5; @Mock Activity mockActivity; @Mock ImageResizer mockImageResizer; @@ -60,12 +61,13 @@ public void setUp() { when(mockFileUtils.getPathFromUri(any(Context.class), any(Uri.class))) .thenReturn("pathFromUri"); - when(mockImageResizer.resizeImageIfNeeded("pathFromUri", null, null)) + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", null, null, QUALITY)) .thenReturn("originalPath"); - when(mockImageResizer.resizeImageIfNeeded("pathFromUri", WIDTH, HEIGHT)) + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", WIDTH, HEIGHT, QUALITY)) .thenReturn("scaledPath"); - when(mockImageResizer.resizeImageIfNeeded("pathFromUri", WIDTH, null)).thenReturn("scaledPath"); - when(mockImageResizer.resizeImageIfNeeded("pathFromUri", null, HEIGHT)) + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", WIDTH, null, QUALITY)) + .thenReturn("scaledPath"); + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", null, HEIGHT, QUALITY)) .thenReturn("scaledPath"); mockFileUriResolver = new MockFileUriResolver(); diff --git a/packages/image_picker/ios/Classes/ImagePickerPlugin.h b/packages/image_picker/ios/Classes/ImagePickerPlugin.h index f070ece9918e..f7825ce7b6d9 100644 --- a/packages/image_picker/ios/Classes/ImagePickerPlugin.h +++ b/packages/image_picker/ios/Classes/ImagePickerPlugin.h @@ -4,5 +4,5 @@ #import -@interface FLTImagePickerPlugin : NSObject +@interface FLTImagePickerPlugin : NSObject @end diff --git a/packages/image_picker/ios/Classes/ImagePickerPlugin.m b/packages/image_picker/ios/Classes/ImagePickerPlugin.m index 82f2e7dbcf7d..b0a266b4ee86 100644 --- a/packages/image_picker/ios/Classes/ImagePickerPlugin.m +++ b/packages/image_picker/ios/Classes/ImagePickerPlugin.m @@ -8,7 +8,7 @@ #import #import -@interface FLTImagePickerPlugin () +@interface FLTImagePickerPlugin () @end static const int SOURCE_CAMERA = 0; @@ -155,7 +155,10 @@ - (void)imagePickerController:(UIImagePickerController *)picker NSNumber *resizeQuality = [_arguments objectForKey:@"resizeQuality"]; if (maxWidth != (id)[NSNull null] || maxHeight != (id)[NSNull null]) { - image = [self scaledImage:image maxWidth:maxWidth maxHeight:maxHeight resizeQuality:resizeQuality]; + image = [self scaledImage:image + maxWidth:maxWidth + maxHeight:maxHeight + resizeQuality:resizeQuality]; } NSData *data = UIImageJPEGRepresentation(image, 1.0); @@ -203,7 +206,7 @@ - (UIImage *)normalizedImage:(UIImage *)image { - (UIImage *)scaledImage:(UIImage *)image maxWidth:(NSNumber *)maxWidth maxHeight:(NSNumber *)maxHeight - resizeQuality:(NSNumber *)resizeQuality { + resizeQuality:(NSNumber *)resizeQuality { double originalWidth = image.size.width; double originalHeight = image.size.height; @@ -242,11 +245,10 @@ - (UIImage *)scaledImage:(UIImage *)image } } - if(resizeQuality == (id)[NSNull null]){ + if (resizeQuality == (id)[NSNull null]) { resizeQuality = [NSNumber numberWithFloat:1.0f]; } - UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, [resizeQuality floatValue]); [image drawInRect:CGRectMake(0, 0, width, height)]; From 916d1513f02fcbce4155bb0ed60045dc7c22664a Mon Sep 17 00:00:00 2001 From: katout Date: Thu, 18 Oct 2018 01:58:07 +0900 Subject: [PATCH 3/6] manual format --- packages/image_picker/ios/Classes/ImagePickerPlugin.h | 2 +- packages/image_picker/ios/Classes/ImagePickerPlugin.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/image_picker/ios/Classes/ImagePickerPlugin.h b/packages/image_picker/ios/Classes/ImagePickerPlugin.h index f7825ce7b6d9..f070ece9918e 100644 --- a/packages/image_picker/ios/Classes/ImagePickerPlugin.h +++ b/packages/image_picker/ios/Classes/ImagePickerPlugin.h @@ -4,5 +4,5 @@ #import -@interface FLTImagePickerPlugin : NSObject +@interface FLTImagePickerPlugin : NSObject @end diff --git a/packages/image_picker/ios/Classes/ImagePickerPlugin.m b/packages/image_picker/ios/Classes/ImagePickerPlugin.m index b0a266b4ee86..3a31ac260f85 100644 --- a/packages/image_picker/ios/Classes/ImagePickerPlugin.m +++ b/packages/image_picker/ios/Classes/ImagePickerPlugin.m @@ -8,7 +8,7 @@ #import #import -@interface FLTImagePickerPlugin () +@interface FLTImagePickerPlugin () @end static const int SOURCE_CAMERA = 0; From 4efbe5ab363ac5731c88607c9a4b86ef7a65ab04 Mon Sep 17 00:00:00 2001 From: katout Date: Thu, 18 Oct 2018 02:33:53 +0900 Subject: [PATCH 4/6] edit test --- .../plugins/imagepicker/ImagePickerDelegateTest.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java index 1e7719afc5fd..67a999a47684 100644 --- a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java +++ b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java @@ -61,14 +61,22 @@ public void setUp() { when(mockFileUtils.getPathFromUri(any(Context.class), any(Uri.class))) .thenReturn("pathFromUri"); - when(mockImageResizer.resizeImageIfNeeded("pathFromUri", null, null, QUALITY)) + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", null, null, null)) .thenReturn("originalPath"); - when(mockImageResizer.resizeImageIfNeeded("pathFromUri", WIDTH, HEIGHT, QUALITY)) + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", WIDTH, HEIGHT, null)) + .thenReturn("scaledPath"); + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", WIDTH, null, null)) + .thenReturn("scaledPath"); + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", null, HEIGHT, null)) .thenReturn("scaledPath"); + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", null, null, QUALITY)) + .thenReturn("originalPath"); when(mockImageResizer.resizeImageIfNeeded("pathFromUri", WIDTH, null, QUALITY)) .thenReturn("scaledPath"); when(mockImageResizer.resizeImageIfNeeded("pathFromUri", null, HEIGHT, QUALITY)) .thenReturn("scaledPath"); + when(mockImageResizer.resizeImageIfNeeded("pathFromUri", WIDTH, HEIGHT, QUALITY)) + .thenReturn("scaledPath"); mockFileUriResolver = new MockFileUriResolver(); From 4d398781e5499ad72e925c2f10535f5024a5b083 Mon Sep 17 00:00:00 2001 From: katout Date: Thu, 18 Oct 2018 12:15:34 +0900 Subject: [PATCH 5/6] update build settings --- packages/cloud_firestore/android/build.gradle | 2 +- packages/image_picker/android/build.gradle | 4 +++- packages/image_picker/example/android/build.gradle | 4 +++- .../example/android/gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/cloud_firestore/android/build.gradle b/packages/cloud_firestore/android/build.gradle index 502a7eca0f73..6f5e3f9b5e6a 100755 --- a/packages/cloud_firestore/android/build.gradle +++ b/packages/cloud_firestore/android/build.gradle @@ -13,7 +13,7 @@ buildscript { } } -allprojects { +rootProject.allprojects { repositories { google() jcenter() diff --git a/packages/image_picker/android/build.gradle b/packages/image_picker/android/build.gradle index aff764cb877d..8c594eaa8d93 100755 --- a/packages/image_picker/android/build.gradle +++ b/packages/image_picker/android/build.gradle @@ -5,10 +5,11 @@ buildscript { repositories { google() jcenter() + mavenLocal() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.android.tools.build:gradle:3.2.0' } } @@ -16,6 +17,7 @@ rootProject.allprojects { repositories { google() jcenter() + mavenLocal() } } diff --git a/packages/image_picker/example/android/build.gradle b/packages/image_picker/example/android/build.gradle index d4225c7905bc..72a63d85b9b5 100755 --- a/packages/image_picker/example/android/build.gradle +++ b/packages/image_picker/example/android/build.gradle @@ -2,10 +2,11 @@ buildscript { repositories { google() jcenter() + mavenLocal() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.android.tools.build:gradle:3.2.0' } } @@ -13,6 +14,7 @@ allprojects { repositories { google() jcenter() + mavenLocal() } } diff --git a/packages/image_picker/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/image_picker/example/android/gradle/wrapper/gradle-wrapper.properties index b6517bb1d165..3f0f9be633f5 100644 --- a/packages/image_picker/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/image_picker/example/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip From b3d78fcf466ec12072bf9eddde5fcddfb4c86fe6 Mon Sep 17 00:00:00 2001 From: katout Date: Fri, 19 Oct 2018 21:47:16 +0900 Subject: [PATCH 6/6] jpeg quality setting by ios --- .../ios/Classes/ImagePickerPlugin.m | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/packages/image_picker/ios/Classes/ImagePickerPlugin.m b/packages/image_picker/ios/Classes/ImagePickerPlugin.m index 3a31ac260f85..cab0b811cb5c 100644 --- a/packages/image_picker/ios/Classes/ImagePickerPlugin.m +++ b/packages/image_picker/ios/Classes/ImagePickerPlugin.m @@ -155,13 +155,13 @@ - (void)imagePickerController:(UIImagePickerController *)picker NSNumber *resizeQuality = [_arguments objectForKey:@"resizeQuality"]; if (maxWidth != (id)[NSNull null] || maxHeight != (id)[NSNull null]) { - image = [self scaledImage:image - maxWidth:maxWidth - maxHeight:maxHeight - resizeQuality:resizeQuality]; + image = [self scaledImage:image maxWidth:maxWidth maxHeight:maxHeight]; } - NSData *data = UIImageJPEGRepresentation(image, 1.0); + if (resizeQuality == (id)[NSNull null]) { + resizeQuality = [NSNumber numberWithFloat:1.0f]; + } + NSData *data = UIImageJPEGRepresentation(image, [resizeQuality floatValue]); NSString *guid = [[NSProcessInfo processInfo] globallyUniqueString]; NSString *tmpFile = [NSString stringWithFormat:@"image_picker_%@.jpg", guid]; NSString *tmpDirectory = NSTemporaryDirectory(); @@ -205,8 +205,7 @@ - (UIImage *)normalizedImage:(UIImage *)image { - (UIImage *)scaledImage:(UIImage *)image maxWidth:(NSNumber *)maxWidth - maxHeight:(NSNumber *)maxHeight - resizeQuality:(NSNumber *)resizeQuality { + maxHeight:(NSNumber *)maxHeight { double originalWidth = image.size.width; double originalHeight = image.size.height; @@ -245,11 +244,7 @@ - (UIImage *)scaledImage:(UIImage *)image } } - if (resizeQuality == (id)[NSNull null]) { - resizeQuality = [NSNumber numberWithFloat:1.0f]; - } - - UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, [resizeQuality floatValue]); + UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, 1.0); [image drawInRect:CGRectMake(0, 0, width, height)]; UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();