残缺代码:https://github.com/MXHOO/canvas
压缩图片
- 获取文件
- 应用cxt.drawImage 在canvas上画
- 利用canvas.toDataURL进行压缩
- 具体实现
function compress(file) { return new Promise((reslove, reject) => { let afterResult = '' const img = new Image() getBase64(file).then(data => { img.src = data }).catch(error => console.log(error)) img.onload = function() { const canvas = document.createElement('canvas') const context = canvas.getContext('2d') canvas.width = this.width canvas.height = this.height /* drawImage(img, sx, sy, swidth, sheight, x, y, width, height):在画布上绘制图像或视频, img为必填参数, 其余都为非必填 参数:img: 要绘制的图片或视频 sx: 开始裁剪的x坐标 sy: 开始裁剪的y坐标 swidth: 被裁剪图像的宽度 sheight: 被裁减图像的高度 x: 在画布上搁置的x坐标 y: 在画布上搁置的y坐标 width:要应用的图像的宽度(扩大/放大) height:要应用的图像的宽度 (扩大/放大) */ context.drawImage(before, 0, 0) /* toDataURL(type, quailty): 返回一个蕴含图片展现的url 参数: type: 图片格式,默认为image/png quailty: 当type为图片时,能够从 0 到 1 的区间内抉择图片的品质 */ afterResult = canvas.toDataURL(file.type, 0.5) reslove(afterResult) } img.onerror = function(err) { reject(err) } }) }
增加水印