Phonegap - 通过路径从相机卷检索照片

Cas*_*sey 20 photo cordova

在我的PhoneGap/jQuery Mobile应用程序中,我目前正在使用PhoneGaps的Camera API来允许用户拍摄照片,该照片也存储在相机胶卷中.我将DestinationType设置为FILE_URI并将此路径保存在本地数据库中.但是,FILE_URI是应用程序关闭时销毁的临时位置的路径.我在考虑保存图像的名称,然后从相机胶卷中检索图像.是否有一条路径可用于稍后检索相机胶卷中的图像?

我在db中将图像保存为Base64,但由于PhoneGap API Doc中的这个注释,我对这种方法有点厌倦:

注意:在较新设备上使用相机拍摄的照片的图像质量非常好.使用Base64对这些图像进行编码会导致某些设备(iPhone 4,BlackBerry Torch 9800)出现内存问题.因此,强烈建议使用FILE_URI作为'Camera.destinationType'.

编辑:

得到了@Simon MacDonald的回答.这是我的精简代码:

function capturePhoto() {
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 25, destinationType: Camera.DestinationType.FILE_URI });
}

function onPhotoURISuccess(imageURI) {
    createFileEntry(imageURI);
}

function createFileEntry(imageURI) {
    window.resolveLocalFileSystemURI(imageURI, copyPhoto, fail);    
}

function copyPhoto(fileEntry) {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys) { 
        fileSys.root.getDirectory("photos", {create: true, exclusive: false}, function(dir) { 
                fileEntry.copyTo(dir, "file.jpg", onCopySuccess, fail); 
            }, fail); 
    }, fail); 
}

function onCopySuccess(entry) {
    console.log(entry.fullPath)
}

function fail(error) {
    console.log(error.code);
}
Run Code Online (Sandbox Code Playgroud)

Sim*_*ald 10

使用FILE_URI方法检索文件后,应使用File API将映像从temp文件夹复制到Documents文件夹,并将新路径存储在数据库中.

因此,您可以将getPicture()的结果传递给window.resolveLocalFileSystemURI()以获取FileEntry.然后,您可以调用FileEntry.copyTo()方法来备份您的文件.