| 12
 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
 
 |