1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| const tool = { dataURLtoFile (dataurl, filename) { let arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new File([u8arr], filename, {type: mime}) },
compress (img) { let originWidth = img.width, originHeight = img.height, maxWidth = 600, maxHeight = 600, quality = 0.8, canvas = document.createElement('canvas'), drawer = canvas.getContext('2d'); let targetWidth = originWidth, targetHeight = originHeight if (originWidth > maxWidth || originHeight > maxHeight) { if (originWidth / originHeight > maxWidth / maxHeight) { targetWidth = maxWidth targetHeight = Math.round(maxWidth * (originHeight / originWidth)) } else { targetHeight = maxHeight targetWidth = Math.round(maxHeight * (originWidth / originHeight)) } } canvas.width = targetWidth canvas.height = targetHeight drawer.clearRect(0, 0, canvas.width, canvas.height) drawer.drawImage(img, 0, 0, canvas.width, canvas.height) let base64 = canvas.toDataURL('image/jpeg', quality) let file = this.dataURLtoFile(base64, Date.parse(Date()) + '.jpg') file = {content: base64, file: file} console.log(file) return file }, } export default tool
|