Javascript 保存phonegap捕获的图像以进行分析
我正在尝试保存使用Phonegap的照相机API拍摄的照片。函数返回文件uri。当我保存它时,它直接保存字符串uri而不是文件。 我甚至尝试将内容类型指定为ajax头文件中的图像。给了我一个断开的链接Javascript 保存phonegap捕获的图像以进行分析,javascript,ajax,image,cordova,Javascript,Ajax,Image,Cordova,我正在尝试保存使用Phonegap的照相机API拍摄的照片。函数返回文件uri。当我保存它时,它直接保存字符串uri而不是文件。 我甚至尝试将内容类型指定为ajax头文件中的图像。给了我一个断开的链接 function capturePhoto(){ //alert(address); navigator.camera.getPicture(uploadPhoto,onFail,{sourceType:1,quality:60,destinationType: Camera.De
function capturePhoto(){
//alert(address);
navigator.camera.getPicture(uploadPhoto,onFail,{sourceType:1,quality:60,destinationType: Camera.DestinationType.FILE_URI});
}
function uploadPhoto(data){
var serverUrl = 'https://api.parse.com/1/files/myphoto.jpg';
$.ajax({
type: "POST",
headers: {'X-Parse-Application-Id': PARSE_APP,
'X-Parse-REST-API-Key':PARSE_REST
// "Content-Type": "image/png"
},
url: serverUrl,
data: data,
processData: false,
contentType: false,
success:function(e){
console.log(e.url);
},
error:function(){
console.loh("ERROR");
}
});
}
您需要使用
destinationType:Camera.destinationType.Native\u URI
。这将返回图像在设备上的实际位置,通常类似于file://storage/0/sdcard/...
。然后可以使用此位置加载/发送/操作图像 您需要获取文件的内容。在上载照片回调中插入以下内容:
function uploadPhoto(data){
var ft = new FileTransfer();
var options = new FileUploadOptions();
options.mimeType = "image/jpeg";
options.chunkedMode = false;
options.params = { // Any params you need...
};
ft.upload(data, 'https://api.parse.com/1/files/myphoto.jpg',
function (e) {
console.log('Success');
},
function (e) {
alert("Upload failed");
}, options);
}
您可能需要根据后端(尚未指定)更改某些选项和参数。克里斯托弗·科恩雷茨(Christopher Coenraets)对如何做到这一点的代码有很好的理解。另一个解决方案是base64结果,在这个方案中,您将创建的图像的src设置为fileUri,然后将图像绘制到画布上,并获取画布的dataUrl。此方法适用于旧版本的PhoneGap,但比使用FileTransfer API直接上载要慢得多。这正是我所做的。但我无法仅使用图像的位置发送图像。我应该将其转换为base64或文件对象,然后上载吗。如果是,请说明如何在javascript中使用uri创建文件对象。我已经在这方面花了很长时间了。@user3646217 Oi抱歉,我键入了错误的文件对象。我的意思是,你建议的第一个选项不适用于Parse RESTAPI。Read(),对于第二个选项,我不需要使用canvas元素对其进行转换,因为phonegap本身允许我这样做,只需设置Camera.DestinationType.DATA\u URL即可。问题是,即使在获得base64编码字符串之后,如何将其存储为png文件的形式进行解析?@user3646217上次我需要在Phonegap中存储dataUrl时,他们没有DATA_URL选项,因此这是一个很好的新功能。我认为你的问题更像是一个解析问题,我从来没有用过。如果您控制后端,您可以通过剥离dataUrl包装器并对结果进行base64解码,轻松地将dataUrl转换为文件,但是我以前没有使用过parse,只是在Google上搜索了一下,发现了以下问题:这可能会满足您的需要。