压缩图片
- 获取文件
- 使用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
context.drawImage(before, 0, 0)
afterResult = canvas.toDataURL(file.type, 0.5)
reslove(afterResult)
}
img.onerror = function(err) {
reject(err)
}
})
}
添加水印
- 根据需求画出水印图案
- 将水印设置为背景
- 具体实现
function createImage(text){
const canvas = document.createElement('canvas')
const ctx= canvas.getContext('2d')
canvas.height = 50
canvas.width = 100
ctx.font = '20px'
ctx.fillStyle = "rgba(100,100,100,0.1)"
ctx.fillText(text, 20, 20)
ctx.rotate(30*Math.PI/180)
return canvas.toDataURL('image/png')
}
function watermark() {
const url = createImage('测试数据')
const watermark = document.getElementById('watermark')
watermark.style.background = 'url(' + url + ') repeat top left'
}