将照片保存到Cordova的iOs专辑中

时间:2014-06-06 22:15:26

标签: ios cordova camera filesystems cordova-3

有没有办法使用Cordova将照片从URL下载并保存到iOs中的相册/相机中?

我使用FileTransfer下载照片,但它们并不像Android画廊那样出现。我想应该有一些插件,但我找不到。或者其他一些方法呢?

如果无法在Cordova中完成,可以完成,所以我可以在Objective C中为Cordova创建插件吗?

2 个答案:

答案 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);