我曾经将图像保存为Base64格式在数据库中,但由于PhoneGap API文档中的这个提示,我对此方法有些担忧:
注意:在较新的设备上使用相机拍摄的图片质量相当好。在某些设备(iPhone 4、BlackBerry Torch 9800)上,使用Base64编码这些图像会导致内存问题。因此,强烈建议使用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);
}
"/var/mobile/Applications/017323CA-35C1-4D50-9CBA-DCC7C697FAF1/Documents/photos/file.jpg"
。任意字符串是iOS为您的应用程序创建的文件夹。要将照片保存到相机胶卷中,在getPicture调用中,将此添加到选项对象中:"savePhotoToAlbum":"true"
。请注意,您无法获取相机胶卷中图像的路径(据我所知),这就是为什么您必须将其复制保存到您的应用程序的“文档”文件夹中的原因。 - Casey