Камера Cordova getPicture сжимает без потерь, даже если качество равно 100.

Привет, друзья. В моем проекте я могу захватить изображение с помощью камеры или галереи, размер файла изображения варьируется до 5-6 МБ в зависимости от качества камеры или выбранного пользователем изображения. Затем я должен загрузить его на сервер.

Требование состоит в том, что перед загрузкой файла на удаленный сервер я хочу применить сжатие без потерь к изображению, чтобы уменьшить размер файла до 2-3 МБ, чтобы сэкономить затраты на Интернет пользователя и место на моем сервере.

без использования resize изображения. как я могу это сделать?.

У меня есть пользователь, загружающий изображение. Это мой код.

$scope.addImage = function (source) {
            $rootScope.ionPopup.close();
            var src = Camera.PictureSourceType.CAMERA
            if (source == 'PHOTOLIBRARY')
                src = Camera.PictureSourceType.PHOTOLIBRARY
            var options = {
                quality: 100,
                destinationType: Camera.DestinationType.DATA_URL,
                sourceType: src,
                allowEdit: false,
                encodingType: Camera.EncodingType.JPEG,
                targetWidth: 350,
                targetHeight: 350,
                //popoverOptions: CameraPopoverOptions,
                saveToPhotoAlbum: true,
                correctOrientation: true
            };
            $cordovaCamera.getPicture(options).then(function (imageData) {
                uploadImage(imageData);

            }, function (err) {
                // error
            });
        };
        var uploadImage = function (imageData) {
            $scope.orderImages.push(imageData);
            $scope.orderImagesList.push({ImageString: imageData});
        };

imageData — изображение в кодировке base64.

Как я могу сжать это изображение в кодировке base64?

Кто-нибудь может мне помочь !


person Sanket Dorle    schedule 04.05.2017    source источник


Ответы (1)


Параметры targetHeight и targetWidth должны изменить результирующий размер файла. Я недавно использовал:

quality: 90, 
targetWidth: 900,
targetHeight: 900,

чтобы получить огромный файл изображения размером 10 МБ, который можно уменьшить примерно до 200 КБ. Имейте в виду, что:

Фотографии, выбранные из галереи устройства, не уменьшаются до более низкого качества, даже если указан параметр качества.

Источник: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-camera/index.html

person Jeremy_inPDX    schedule 23.05.2017