1234567891011121314151617181920212223242526272829303132333435 |
- export function resize(base64, callback) {
- const w = 1440
- let newImage = new Image()
- let quality = 0.8 //压缩系数
- newImage.src = base64
- newImage.setAttribute('crossOrigin', 'Anonymous')
- let imgWidth, imgHeight
- newImage.onload = function () {
- imgWidth = this.width
- imgHeight = this.height
- let canvas = document.createElement('canvas')
- let ctx = canvas.getContext('2d')
- if (Math.max(imgWidth, imgHeight) > w) {
- if (imgWidth > imgHeight) {
- canvas.width = w
- canvas.height = (w * imgHeight) / imgWidth
- } else {
- canvas.height = w
- canvas.width = (w * imgWidth) / imgHeight
- }
- } else {
- canvas.width = imgWidth
- canvas.height = imgHeight
- quality = 0.8
- }
- ctx.clearRect(0, 0, canvas.width, canvas.height)
- ctx.drawImage(this, 0, 0, canvas.width, canvas.height)
- let base64 = canvas.toDataURL('image/jpeg', quality) // 执行压缩
- while (base64.length / 1024 > 500) {
- quality -= 0.01
- base64 = canvas.toDataURL('image/jpeg', quality)
- }
- callback(base64)
- }
- }
|