【问题标题】:Save photo to iOs album in Cordova在 Cordova 中将照片保存到 iOs 相册
【发布时间】:2014-06-06 22:15:26
【问题描述】:

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

我使用 FileTransfer 下载照片,但它们不像在 android 图库中那样显示。我想应该有一些插件,但我找不到。或者其他方法?

如果不能在 Cordova 中完成,是否可以完成,所以我可以在 Objective C 中为 Cordova 创建插件?

【问题讨论】:

    标签: ios cordova camera filesystems cordova-3


    【解决方案1】:

    您需要使用 CLI 安装 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,上面写着

    图像已保存!

    希望对你有所帮助!

    【讨论】:

      【解决方案2】:

      @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);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-26
        • 2014-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-12
        • 2023-03-26
        相关资源
        最近更新 更多