你好朋友在我的项目中,我能够通过相机或图库捕捉图像,图像文件的大小根据相机质量或用户选择的图像变化到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编码的图像?
有人可以帮帮我!
答案 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