我正在研究一种功能,在从原生相机捕获图像后,我正在对图像进行上传。这里,对图像的大小有限制。所以,我需要以MB为单位计算图像大小。
Camera.getPicture(gotPicture, cameraError, {
quality: 50,
allowEdit: true,
targetWidth: 200,
targetHeight: 200,
destinationType: Camera.DestinationType.DATA_URL
});
camera
.getPicture(
gotPicture,
cameraError, {
quality: 100,
allowEdit: true,
targetWidth: 200,
targetHeight: 200,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
destinationType: Camera.DestinationType.DATA_URL
});
我发现很多建议将它保存为文件,但在这里我收到它作为DATA URI(因为我需要传递Base64图像进行处理)。
有人可以帮助计算从PHOTO_GALLERY点击/引用的图片的实际尺寸。
当我调用Phonegap API时,还有一个查询,是否在API级别进行了任何大小的压缩,
提前致谢!!!
答案 0 :(得分:1)
您可以获得图像的大小和Base64数据,如下所示:
function capturePhoto() {
navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
saveToPhotoAlbum: true});
}
function onPhotoDataSuccess(imageURI) {
getSize(imageURI);
}
function onFail(message) {
alert('Failed');
}
function getSize(fileUri) {
window.resolveLocalFileSystemURL(
fileUri,
function(fileEntry){
fileEntry.getMetadata(function(metadata){
alert("size is"+metadata.size);
}, resOnError);
fileEntry.file( function(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
alert(evt.target.result);
};
reader.readAsDataURL(file);
}, resOnError);
},
resOnError);
}
function resOnError(error) {
alert("error");
}

您可以通过设置sourceType :Camera.PictureSourceType.PHOTOLIBRARY
为照片库执行此操作。为了缩小尺寸,我建议您在getPicture
中设置较低的质量。