Cordova相机getPicture即使在质量为100时也是无损压缩

时间:2017-05-04 07:16:26

标签: javascript image cordova base64 image-compression

你好朋友在我的项目中,我能够通过相机或图库捕捉图像,图像文件的大小根据相机质量或用户选择的图像变化到5-6 MB。然后我必须上传它在服务器上。

要求是,在远程服务器上传文件之前,我想在图像上应用无损压缩,将文件大小减小到2-3MB,这样可以节省用户和网络的互联网成本。和我的服务器空间。

不使用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编码的图像?

有人可以帮帮我!

1 个答案:

答案 0 :(得分:1)

$model->checkbox = Input::get('checkbox')targetHeight选项应更改生成的文件大小。我最近用过:

targetWidth

获取一个巨大的10MB图像文件,缩小到大约200KB。请记住:

  

从设备库中选择的照片未缩减为a   即使指定了质量参数,质量也会降低。

来源:https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-camera/index.html