有没有办法使用Cordova将照片从URL下载并保存到iOs中的相册/相机中?
我使用FileTransfer下载照片,但它们并不像Android画廊那样出现。我想应该有一些插件,但我找不到。或者其他一些方法呢?
如果无法在Cordova中完成,可以完成,所以我可以在Objective C中为Cordova创建插件吗?
答案 0 :(得分:1)
您需要使用CLI安装Canvas2Image,如下所示:
cordova plugin add https://github.com/devgeeks/Canvas2ImagePlugin.git
(或者如果您使用'phoneova',请将'cordova'替换为'phonegap'。)
接下来,您需要添加一个函数(在本例中为saveImageToPhone()),该函数调用刚刚添加到项目中的插件。将从您的按钮选择器调用此功能。例如:
<button onclick="saveMyPic("path/to/my/pic.jpg")">Save a pic to library</button>
它不一定是一个按钮,很明显,你可以调用函数并将它传递给你喜欢的任何URL。这个“URL”可以是您从FileTransfer成功返回的路径。
这是我的代码:
function saveMyPic(myURL){
var MEsuccess = function(msg){
console.info(msg);
};
var MEerror = function(err){
console.error(err);
};
saveImageToPhone(myURL, MEsuccess, MEerror);
}
function saveImageToPhone(url, success, error) {
var canvas, context, imageDataUrl, imageData;
var img = new Image();
img.onload = function() {
canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
context = canvas.getContext('2d');
context.drawImage(img, 0, 0);
try {
imageDataUrl = canvas.toDataURL('image/jpeg', 1.0);
imageData = imageDataUrl.replace(/data:image\/jpeg;base64,/, '');
cordova.exec(
success,
error,
'Canvas2ImagePlugin',
'saveImageDataToLibrary',
[imageData]
);
}
catch(e) {
error(e.message);
}
};
try {
img.src = url;
}
catch(e) {
error(e.message);
}
} 现在只需从你想要的任何地方调用第一个函数。如果它有效,你会得到一个说
的console.log图像已保存!
我希望能帮到你!
答案 1 :(得分:0)
@WillCo解决方案可能会完成这项工作,但创建画布并将画布日期转换为base64到达目标,就像下载照片一样简单,至少是不必要的。
我最近挖出了这个项目的旧代码。我为iOS创建了一个小的原生插件,可以直接从给定的URL下载图像到设备上的系统库。
我将我的解决方案发布到GitHub: https://github.com/Kocik/cordova-photo-to-album-plugin
工作原理:
安装插件:
cordova plugin add https://github.com/Kocik/cordova-photo-to-album-plugin/
在您的javascript中添加:window.plugins.phototoalbum.download(url, successCallback, failCallback);