需求:taro开发h5,需要压缩上传图片,利用canvas绘制进行压缩
一、压缩图片的JS
function _compressedImage(img) {
const canvas = document.createElement("canvas");
const ct = canvas.getContext("2d");
const canvasWidth = img.width / 2;
const canvasHeight = img.height / 2;
canvas.width = canvasWidth;
canvas.height = canvasHeight;
ct.drawImage(img, 0, 0, canvasWidth, canvasHeight);
const dataUrl = canvas.toDataURL("image/jpeg", 0.6);
return dataUrl;
}
function readFile(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader(file);
reader.readAsDataURL(file);
reader.onload = () => {
const content = reader.result;
const img = new Image();
img.src = content;
resolve(img);
};
});
}
function loadImg(img) {
return new Promise((resolve, reject) => {
img.onload = ()