需要以字节为单位计算图像大小 - 来自phonegap相机的图像

时间:2016-07-19 07:40:43

标签: image cordova phonegap-build

我正在研究一种功能,在从原生相机捕获图像后,我正在对图像进行上传。这里,对图像的大小有限制。所以,我需要以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级别进行了任何大小的压缩,

提前致谢!!!

1 个答案:

答案 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中设置较低的质量。