【发布时间】:2012-02-29 03:28:56
【问题描述】:
在我的PhoneGap/jQuery Mobile 应用程序中,我目前正在使用PhoneGaps 的相机API 来允许用户拍照,该照片也存储在相机胶卷中。我将 DestinationType 设置为 FILE_URI 并将此路径保存在本地数据库中。但是,FILE_URI 是一个临时位置的路径,在应用程序关闭时会被销毁。我正在考虑保存图像的名称,然后从相机胶卷中检索图像。是否有路径可供我稍后检索相机胶卷中的图像?
我在数据库中将图像保存为 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);
}
【问题讨论】:
-
我正在尝试处理这种完全相同的情况,并且您发布的代码似乎可以正常工作,并且我一直使用您的 onCopySuccess 函数,但我的相机胶卷或任何其他内容中仍然看不到任何图像专辑。我在 onCopySuccess 函数中获得的条目描述了一个在 temp 被清除时被清除的文件。 – Yoh Suzuki 刚刚编辑
-
以上代码不会将照片保存到相册,而是保存到应用的 Documents 文件夹中。照片的路径如下所示:
"/var/mobile/Applications/017323CA-35C1-4D50-9CBA-DCC7C697FAF1/Documents/photos/file.jpg"。任意字符串是 iOS 为您的应用创建的文件夹。要将照片保存到相机胶卷,请在 getPicture 调用中将其添加到选项对象:"savePhotoToAlbum" : "true"。请注意,您无法在相机胶卷 (AFAIK) 中获取图像的路径,这就是您必须将副本保存到应用程序的 Documents 文件夹的原因。 -
savePhotoToAlbum 似乎对我不起作用,并且不在文档中。
-
啊,我明白了。它实际上是“saveToPhotoAlbum”。这行得通!
-
抱歉打错了。感谢您的修复。是的,不知道为什么它不在文档中。我忘记了在哪里找到它,但他们认为它不在文档中,因为它特定于 iOS;这对我来说似乎不是一个很好的理由。