Нужно рассчитать размер изображения в байтах - для изображений с камеры с пробелом

image cordova phonegap-build

1275 просмотра

1 ответ

0 Репутация автора

Я работаю над функционалом, где я загружаю изображение после захвата его с родной камеры. Здесь есть ограничение относительно размера изображения. Итак, мне нужно рассчитать размер изображения в МБ.

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 Image для обработки).

Может ли кто-нибудь помочь в подсчете фактического размера изображения, на которое нажимали / ссылались из PHOTO_GALLERY.

У меня есть еще один запрос, например, когда я звоню в Phonegap API, происходит ли какое-либо сжатие размера на уровне API,

Заранее спасибо!!!

Автор: user1455310 Источник Размещён: 19.07.2016 07:40

Ответы (1)


1 плюс

936 Репутация автора

Вы можете получить как размер, так и данные 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.

Автор: Homen Размещён: 19.07.2016 09:29
Вопросы из категории :
32x32