是否有一种方法来下载和保存照片从URL到相册/cameraroll在iOs使用Cordova?
我用FileTransfer下载照片,但是它们不像在android图库中那样显示出来。我想应该有一些插件,但我找不到一个。或者其他方法?
如果它不能在Cordova中完成,它可以完成,所以我可以在Objective C中为Cordova创建插件吗?
你需要像这样安装Canvas2Image:
cordova plugin add https://github.com/devgeeks/Canvas2ImagePlugin.git
(或者用'phonegap'代替'cordova')
接下来,您需要添加一个函数(在本例中为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,显示
图像得救了!
我希望这对你有帮助!
@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);