将图像保存在本地存储phonegap中

Posted

技术标签:

【中文标题】将图像保存在本地存储phonegap中【英文标题】:Save image in local storage phonegap 【发布时间】:2013-02-02 09:43:58 【问题描述】:

我对 phonegap 很陌生,它说它具有捕获功能。所以我用了它,非常好。但是我在html中显示了图片,但我不知道如何保存图片。

根据http://docs.phonegap.com/en/1.7.0/cordova_camera_camera.md.html

你可以对编码后的图像或 URI 做任何你想做的事情,例如:

在标签中渲染图像(参见下面的示例) 在本地保存数据(LocalStorage、Lawnchair 等) 将数据发布到远程服务器

很遗憾,没有关于如何操作的示例代码

如何将图像保存在本地存储或设备图库中?

【问题讨论】:

找到 github.com/raananw/PhoneGap-Image-Resizer 这还能用吗? 它的工作原理只是需要一些调整 【参考方案1】:

太好了,您找到了解决方案,我按照以下方式做到了。 希望对其他人有所帮助。

只需在按钮点击事件上调用 capturePhoto 函数。

// A button will call this function
//
function capturePhoto() 
    sessionStorage.removeItem('imagepath');
    // Take picture using device camera and retrieve image as base64-encoded string
    navigator.camera.getPicture(onPhotoDataSuccess, onFail,  quality: 50, destinationType: Camera.DestinationType.FILE_URI );


function onPhotoDataSuccess(imageURI)  
        // Uncomment to view the base64 encoded image data
        // console.log(imageData);

        // Get image handle
        //
        var imgProfile = document.getElementById('imgProfile');

        // Show the captured photo
        // The inline CSS rules are used to resize the image
        //
        imgProfile.src = imageURI;
        if(sessionStorage.isprofileimage==1)
            getLocation();
        
        movePic(imageURI);


// Called if something bad happens.
// 
function onFail(message) 
    alert('Failed because: ' + message);


function movePic(file) 
    window.resolveLocalFileSystemURI(file, resolveOnSuccess, resOnError); 
 

//Callback function when the file system uri has been resolved
function resolveOnSuccess(entry) 
    var d = new Date();
    var n = d.getTime();
    //new file name
    var newFileName = n + ".jpg";
    var myFolderApp = "MyAppFolder";

    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys)       
    //The folder is created if doesn't exist
    fileSys.root.getDirectory( myFolderApp,
                    create:true, exclusive: false,
                    function(directory) 
                        entry.moveTo(directory, newFileName,  successMove, resOnError);
                    ,
                    resOnError);
                    ,
    resOnError);


//Callback function when the file has been moved successfully - inserting the complete path
function successMove(entry) 
    //Store imagepath in session for future use
    // like to store it in database
    sessionStorage.setItem('imagepath', entry.fullPath);


function resOnError(error) 
    alert(error.code);

这段代码的作用是

捕获图像并将其存储在设备 SD 卡上的 MyAppFolder 中。 并将 imagepath 存储在 session 中,以便插入到本地数据库中。

【讨论】:

我可以捕获图像但无法保存到本地存储 这段代码已经被我很好地测试过了。尝试调试,日志中有什么?你有任何错误吗?【参考方案2】:

将选项中的 saveToPhotoAlbum 设置为 True 也可以很好地工作。从 2.9 文档 here 获得。

【讨论】:

以上是关于将图像保存在本地存储phonegap中的主要内容,如果未能解决你的问题,请参考以下文章

使用PhoneGap截取图片,在app中显示并保存到本地存储

Cordova/Phonegap/Ionic App - 远程图像的本地存储

如何在本地存储中保存图像位置

在本地使用 phonegap 缓存图像和数据

将使用相机拍摄的照片捕获并存储到本地数据库/PhoneGap/Cordova/iOS

在 PhoneGap IOS 上缓存图像的最佳方法