base64 压缩图片
Posted super-scarlett
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了base64 压缩图片相关的知识,希望对你有一定的参考价值。
//图片处理
afterimg(err, photos) {
var _this = this;
if(err && err != null && err != ‘‘) {
return ;
}
var src = ‘data:image/jpeg;base64,‘ + photos;
var inputData = {
fileName: ["upload", ‘_‘, new Date().getTime(), ‘_‘, Math.floor(Math.random() * 1000000), ‘.png‘].join(‘‘), // 文件全名,包括格式
fileContent: src
};
var width = parseInt(document.documentElement.clientWidth) * 0.8;
_this.dealImage(src, {
width: width
}, inputData, _this.uploadimage);
},
//压缩图片
dealImage(path, obj, data, cb) {
var img = new Image();
img.src = path;
img.onload = function() {
var that = this;
// 默认按比例压缩
var w = that.width,
h = that.height,
scale = w / h;
w = obj.width || w;
h = obj.height || (w / scale);
var quality = 0.75; // 默认图片质量为0.7
//生成canvas
var canvas = document.createElement(‘canvas‘);
var ctx = canvas.getContext(‘2d‘);
// 创建属性节点
var anw = document.createAttribute("width");
anw.nodeValue = w;
var anh = document.createAttribute("height");
anh.nodeValue = h;
canvas.setAttributeNode(anw);
canvas.setAttributeNode(anh);
ctx.drawImage(that, 0, 0, w, h);
// 图像质量
if(obj.quality && obj.quality <= 1 && obj.quality > 0) {
quality = obj.quality;
}
var base64 = canvas.toDataURL(‘image/jpeg‘, quality).replace(‘data:image/jpeg;base64,‘, ‘‘);
// 回调函数返回base64的值
data.fileContent = base64;
typeof cb == ‘function‘ && cb(data);
}
},
//上传图片
uploadimage(inputData) {}
以上是关于base64 压缩图片的主要内容,如果未能解决你的问题,请参考以下文章
uni-app图片压缩转base64位 利用递归来实现多张图片压缩
图片采用base64压缩,可以以字符串的形式传送base64给服务端转存为图片