From 0759ff0ed14c657f88fada29aa7baa7db2791e99 Mon Sep 17 00:00:00 2001 From: lorenzobob0 Date: Mon, 13 Aug 2018 14:18:11 +0200 Subject: [PATCH 1/2] Update README.md --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README.md b/README.md index c540413..105c3f7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,22 @@ +Added support for Base64 images URIs passed as file name. + +Example +====== + + +``` + +var nativePathToJpegImage = 'data:image/jpeg;base64,' +or +var nativePathToJpegImage = 'data:image/gif;base64,' +or +var nativePathToJpegImage = 'data:image/png;base64,' + +window.cordova.plugins.imagesaver.saveImageToGallery(nativePathToJpegImage, onSaveImageSuccess, onSaveImageError); + +``` + + SaveImage ====== From d014abcb7bd7cb40bb78fd5353fcb0cacd6840c9 Mon Sep 17 00:00:00 2001 From: Lorenzo Moretti Date: Mon, 13 Aug 2018 15:44:48 +0200 Subject: [PATCH 2/2] Support for Base64 encoded JPEG image URI --- README.md | 6 +----- src/android/SaveImage.java | 27 +++++++++++++++++++++++++++ src/ios/SaveImage.m | 13 ++++++++++++- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 105c3f7..84e3270 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Added support for Base64 images URIs passed as file name. +Added support for JPEG Base64 images URIs passed as file name. Example ====== @@ -7,10 +7,6 @@ Example ``` var nativePathToJpegImage = 'data:image/jpeg;base64,' -or -var nativePathToJpegImage = 'data:image/gif;base64,' -or -var nativePathToJpegImage = 'data:image/png;base64,' window.cordova.plugins.imagesaver.saveImageToGallery(nativePathToJpegImage, onSaveImageSuccess, onSaveImageError); diff --git a/src/android/SaveImage.java b/src/android/SaveImage.java index eaf3ea2..37e4030 100644 --- a/src/android/SaveImage.java +++ b/src/android/SaveImage.java @@ -21,6 +21,7 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Environment; +import android.util.Base64; import android.util.Log; /** @@ -77,6 +78,31 @@ private void saveImageToGallery(JSONArray args, CallbackContext callback) throws */ private void performImageSave() throws JSONException { // create file from passed path + + // BoB0: patch per supportare i file base64 + String ext = ""; + String dataB64 = ""; + if (filePath.indexOf("data:image/jpeg;base64,") == 0) { + ext = "jpg"; + dataB64 = filePath.substring("data:image/jpeg;base64,".length()); + } + + if (!ext.equals("")) { + try { + byte[] data = Base64.decode(dataB64, Base64.DEFAULT); + File outputFile = File.createTempFile("image", ext); + FileOutputStream stream = new FileOutputStream(outputFile); + stream.write(data); + stream.close(); + filePath = outputFile.getAbsolutePath(); + + } catch (Exception e) { + callbackContext.error("RuntimeException occurred: " + e.getMessage()); + } + + } + + File srcFile = new File(filePath); // destination gallery folder - external storage @@ -191,3 +217,4 @@ public void onRequestPermissionResult(int requestCode, String[] permissions, int } } } + diff --git a/src/ios/SaveImage.m b/src/ios/SaveImage.m index 4098e33..10372a5 100644 --- a/src/ios/SaveImage.m +++ b/src/ios/SaveImage.m @@ -12,11 +12,21 @@ - (void)saveImageToGallery:(CDVInvokedUrlCommand*)command { NSLog(@"Image absolute path: %@", imgAbsolutePath); - UIImage *image = [UIImage imageWithContentsOfFile:imgAbsolutePath]; + UIImage *image = nil; + if ([imgAbsolutePath hasPrefix:@"data:image/jpeg;base64,"]) { + image = [self decodeBase64ToImage: [imgAbsolutePath substringFromIndex:[@"data:image/jpeg;base64," length]]]; + } else { + image = [UIImage imageWithContentsOfFile:imgAbsolutePath]; + } UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); }]; } +- (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData { + NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters]; + return [UIImage imageWithData:data]; +} + - (void)dealloc { [callbackId release]; [super dealloc]; @@ -39,3 +49,4 @@ - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error context } @end +