Compare commits
44 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0b74c2a75 | ||
|
|
80aa06a6a1 | ||
|
|
771674d948 | ||
|
|
51093d00b8 | ||
|
|
ee4e96a1da | ||
|
|
8590d54633 | ||
|
|
fa0558ea75 | ||
|
|
d270bcb1a6 | ||
|
|
096fada588 | ||
|
|
f2d7364e2f | ||
|
|
a4b9af06be | ||
|
|
a7167e2271 | ||
|
|
2f531aaa0b | ||
|
|
f939db234c | ||
|
|
d48ac59654 | ||
|
|
73661bfde0 | ||
|
|
31676e30c9 | ||
|
|
691bd3fa40 | ||
|
|
2cd9da795d | ||
|
|
6c09ce9084 | ||
|
|
35bb949c91 | ||
|
|
9f9f4d0e1b | ||
|
|
e53cf1eca4 | ||
|
|
225bd5bfc0 | ||
|
|
faf76f2315 | ||
|
|
01760d5621 | ||
|
|
d064aea90a | ||
|
|
ff9f8edbea | ||
|
|
b4206a4045 | ||
|
|
c560d6ef1a | ||
|
|
8447803226 | ||
|
|
2fec5c863b | ||
|
|
569fbb77c4 | ||
|
|
ae56b05219 | ||
|
|
80edab88e9 | ||
|
|
39b835717c | ||
|
|
4b40b56677 | ||
|
|
e420a09a81 | ||
|
|
e2695a6af6 | ||
|
|
720458fbbc | ||
|
|
123f36b94a | ||
|
|
e687171a32 | ||
|
|
6b39e70581 | ||
|
|
60aee7b9fd |
21
README.md
21
README.md
@@ -1,4 +1,4 @@
|
||||
# Cordova base64ToGallery Plugin
|
||||
# :warning: DISCONTINUED - Cordova base64ToGallery Plugin
|
||||
This plugin (based on [devgeeks/Canvas2ImagePlugin](http://github.com/devgeeks/Canvas2ImagePlugin)) allows you to save base64 data as a png image into the device (iOS Photo Library, Android Gallery or WindowsPhone 8 Photo Album).
|
||||
|
||||
The plugin is a kind of fork of the [solderzzc/Base64ImageSaverPlugin](https://github.com/solderzzc/Base64ImageSaverPlugin) but with a cleaner history (a.k.a: no tags from Canvas2ImagePlugin repo) and a newer iOS implementation.
|
||||
@@ -18,27 +18,29 @@ So, cordova-base64-to-gallery plugin **from version 3.0.0** has changed the iOS
|
||||
If you need to support cordova-ios < 3.8.0 please refer to [cordova-base64-to-gallery@2.0.2](https://github.com/Nexxa/cordova-base64-to-gallery/tree/2.0.2). There is also an "**old**" branch that might have some updates in the future (Android/WP8 fixes or something like that).
|
||||
|
||||
## Usage
|
||||
Call the `cordova.base64ToGallery()` method using success and error callbacks and the passing the image's base64 string (`options` is optional):
|
||||
Call the `cordova.base64ToGallery()` method with image's base64 string, success and error callbacks (`options` is optional):
|
||||
|
||||
### Methods
|
||||
#### `cordova.base64ToGallery(data, [options, success, fail])`
|
||||
|
||||
Param | Type | Default | Description
|
||||
----------- | ---------- | ----------------- | ------------------
|
||||
----------- | ---------- | ----------------- | -----------------------------------------
|
||||
**data** | *string* | | base64 string
|
||||
**options** | *object* | \*see below | options
|
||||
**success** | *function* | **console.log** | success callback
|
||||
**fail** | *function* | **console.error** | fail callback
|
||||
**success** | *function* | **console.log** | success callback (file path as parameter)
|
||||
**fail** | *function* | **console.error** | fail callback (error as parameter)
|
||||
|
||||
#### Available options *
|
||||
|
||||
##### `prefix`
|
||||
Saved file name prefix. Only works in Android and WP8.
|
||||
Saved file name prefix.
|
||||
|
||||
**Default**: "img_"
|
||||
|
||||
##### `mediaScanner`
|
||||
Android Media Scanner after file creation enabled or not. Only works in Android.
|
||||
On Android runs Media Scanner after file creation.
|
||||
|
||||
On iOS if true the file will be added to camera roll, otherwise will be saved to a library folder.
|
||||
|
||||
**Default**: true
|
||||
|
||||
@@ -54,8 +56,8 @@ function onDeviceReady() {
|
||||
mediaScanner: true
|
||||
},
|
||||
|
||||
function(msg) {
|
||||
console.log(msg);
|
||||
function(path) {
|
||||
console.log(path);
|
||||
},
|
||||
|
||||
function(err) {
|
||||
@@ -69,3 +71,4 @@ function onDeviceReady() {
|
||||
- [Tommy-Carlos Williams](http://github.com/devgeeks)
|
||||
- [Simba Zhang](http://github.com/solderzzc)
|
||||
- [StefanoMagrassi](http://github.com/StefanoMagrassi)
|
||||
- [Bastian Meier](https://github.com/bastian-meier)
|
||||
|
||||
1196
package-lock.json
generated
Normal file
1196
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,13 @@
|
||||
{
|
||||
"name": "cordova-base64-to-gallery",
|
||||
"version": "4.0.0",
|
||||
"version": "4.1.3",
|
||||
"description": "Cordova plugin to save base64 data as a png image into the device",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"bump": "node ./scripts/bump_version",
|
||||
"lint": "eslint www/base64ToGallery.js",
|
||||
"test": "npm run lint",
|
||||
"postversion": "npm run bump",
|
||||
"prepublish": "npm test"
|
||||
},
|
||||
"repository": {
|
||||
@@ -56,7 +57,7 @@
|
||||
}
|
||||
],
|
||||
"devDependencies": {
|
||||
"eslint": "1.10.3",
|
||||
"nodemsg": "1.0.0"
|
||||
"eslint": "3.12.2",
|
||||
"nodemsg": "1.1.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plugin xmlns:android="http://schemas.android.com/apk/res/android" xmlns="http://www.phonegap.com/ns/plugins/1.0" id="cordova-base64-to-gallery" version="4.0.0">
|
||||
<plugin xmlns:android="http://schemas.android.com/apk/res/android" xmlns="http://www.phonegap.com/ns/plugins/1.0" id="cordova-base64-to-gallery" version="4.1.3">
|
||||
|
||||
<engines>
|
||||
<engine name="cordova-ios" version=">=3.8.0" />
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
//
|
||||
// Base64ToGallery.m
|
||||
// Base64ToGallery PhoneGap/Cordova plugin
|
||||
@@ -20,39 +21,82 @@
|
||||
self.callbackId = command.callbackId;
|
||||
self.result = nil;
|
||||
|
||||
NSString* base64String = [command.arguments objectAtIndex:0];
|
||||
|
||||
NSString *base64String = [command.arguments objectAtIndex:0];
|
||||
NSString *prefix = [command.arguments objectAtIndex:1];
|
||||
bool cameraRoll = [[command.arguments objectAtIndex:2] boolValue];
|
||||
|
||||
if (base64String != nil && [base64String length] > 0) {
|
||||
|
||||
NSData *imageData = [[[NSData alloc] initWithBase64EncodedString:base64String options:0] autorelease];
|
||||
UIImage *image = [[[UIImage alloc] initWithData:imageData] autorelease];
|
||||
|
||||
NSData* imageData = [[[NSData alloc] initWithBase64EncodedString:base64String options:0] autorelease];
|
||||
UIImage* image = [[[UIImage alloc] initWithData:imageData] autorelease];
|
||||
// converts the UIImage to NSData
|
||||
NSData *pngImageData = UIImagePNGRepresentation(image);
|
||||
|
||||
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
|
||||
// image extension
|
||||
NSString *imageExtension = @".png";
|
||||
|
||||
// get Timestamp
|
||||
double currentTime = CACurrentMediaTime();
|
||||
|
||||
// set fileName
|
||||
NSString *timeString = [NSString stringWithFormat:@"%f", currentTime];
|
||||
timeString = [timeString stringByReplacingOccurrencesOfString:@"." withString:@""];
|
||||
NSString *fileName = [prefix stringByAppendingString: timeString];
|
||||
fileName = [fileName stringByAppendingString: imageExtension];
|
||||
|
||||
NSString *libPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0];
|
||||
NSString *libPathNoSync = [libPath stringByAppendingPathComponent:@"NoCloud"];
|
||||
NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager
|
||||
|
||||
// Create the directory if necessary.
|
||||
[fileManager createDirectoryAtPath:libPathNoSync withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
|
||||
NSString *imagePath = [libPathNoSync stringByAppendingPathComponent:fileName];
|
||||
|
||||
// writeToFile
|
||||
bool success = [fileManager createFileAtPath:imagePath contents:pngImageData attributes:nil];
|
||||
|
||||
if(success){
|
||||
// write to documents folder was successfull
|
||||
if(cameraRoll){
|
||||
// add the image to camera roll
|
||||
UIImage * savedImage = [UIImage imageWithContentsOfFile:imagePath];
|
||||
UIImageWriteToSavedPhotosAlbum(savedImage, self,
|
||||
@selector(thisImage:hasBeenSavedInPhotoAlbumWithError:onImagePath:),
|
||||
(void *) CFBridgingRetain(imagePath));
|
||||
} else {
|
||||
// send back the image path of the saved image
|
||||
CDVPluginResult * pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:imagePath];
|
||||
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackId];
|
||||
}
|
||||
|
||||
}else{
|
||||
imagePath = [imagePath stringByAppendingString: @" - error writing image to documents folder"];
|
||||
CDVPluginResult * pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:imagePath];
|
||||
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackId];
|
||||
}
|
||||
|
||||
} else {
|
||||
self.result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];
|
||||
|
||||
[self.commandDelegate sendPluginResult:self.result callbackId:self.callbackId];
|
||||
CDVPluginResult * pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"no valid base64 image data was passed"];
|
||||
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackId];
|
||||
}
|
||||
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
|
||||
{
|
||||
// With errors
|
||||
if (error != NULL) {
|
||||
NSLog(@"ERROR: %@", error);
|
||||
|
||||
self.result = [CDVPluginResult resultWithStatus: CDVCommandStatus_ERROR messageAsString:error.description];
|
||||
|
||||
// No errors
|
||||
-(void)thisImage:(UIImage *)image hasBeenSavedInPhotoAlbumWithError:(NSError *)error onImagePath:(void*)bridgedImagePath{
|
||||
if (error) {
|
||||
CDVPluginResult * pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"Error saving Image to Gallery, check Permissions"];
|
||||
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackId];
|
||||
} else {
|
||||
// retrieve bridged image path and release it to get the image path
|
||||
NSString *imagePath = (NSString *) CFBridgingRelease(bridgedImagePath);
|
||||
|
||||
self.result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK];
|
||||
// send the image path back to the js callback
|
||||
CDVPluginResult * pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:imagePath];
|
||||
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackId];
|
||||
}
|
||||
|
||||
[self.commandDelegate sendPluginResult:self.result callbackId:self.callbackId];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user