Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
19
README.md
19
README.md
@@ -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)
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
{
|
||||
"name": "cordova-base64-to-gallery",
|
||||
"version": "4.0.0",
|
||||
"version": "4.1.1",
|
||||
"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": {
|
||||
|
||||
@@ -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.1">
|
||||
|
||||
<engines>
|
||||
<engine name="cordova-ios" version=">=3.8.0" />
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
//
|
||||
// Base64ToGallery.m
|
||||
// Base64ToGallery PhoneGap/Cordova plugin
|
||||
@@ -20,39 +21,65 @@
|
||||
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, nil, nil, nil);
|
||||
}
|
||||
|
||||
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
|
||||
} else {
|
||||
|
||||
self.result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK];
|
||||
}
|
||||
|
||||
[self.commandDelegate sendPluginResult:self.result callbackId:self.callbackId];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user