|
|
|
@ -44,36 +44,25 @@ const getOrientation = (img, type = 'image/png') => new Promise(resolve => { |
|
|
|
|
|
|
|
|
|
const processImage = (img, { width, height, orientation, type = 'image/png' }) => new Promise(resolve => { |
|
|
|
|
const canvas = document.createElement('canvas'); |
|
|
|
|
[canvas.width, canvas.height] = orientation < 5 ? [width, height] : [height, width]; |
|
|
|
|
|
|
|
|
|
if (4 < orientation && orientation < 9) { |
|
|
|
|
canvas.width = height; |
|
|
|
|
canvas.height = width; |
|
|
|
|
} else { |
|
|
|
|
canvas.width = width; |
|
|
|
|
canvas.height = height; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const context = canvas.getContext('2d'); |
|
|
|
|
|
|
|
|
|
switch (orientation) { |
|
|
|
|
case 2: |
|
|
|
|
context.translate(width, 0); |
|
|
|
|
break; |
|
|
|
|
case 3: |
|
|
|
|
context.translate(width, height); |
|
|
|
|
break; |
|
|
|
|
case 4: |
|
|
|
|
context.translate(0, height); |
|
|
|
|
break; |
|
|
|
|
case 5: |
|
|
|
|
context.rotate(0.5 * Math.PI); |
|
|
|
|
context.translate(1, -1); |
|
|
|
|
break; |
|
|
|
|
case 6: |
|
|
|
|
context.rotate(0.5 * Math.PI); |
|
|
|
|
context.translate(0, -height); |
|
|
|
|
break; |
|
|
|
|
case 7: |
|
|
|
|
context.rotate(0.5, Math.PI); |
|
|
|
|
context.translate(width, -height); |
|
|
|
|
break; |
|
|
|
|
case 8: |
|
|
|
|
context.rotate(-0.5, Math.PI); |
|
|
|
|
context.translate(-width, 0); |
|
|
|
|
break; |
|
|
|
|
case 2: context.transform(-1, 0, 0, 1, width, 0); break; |
|
|
|
|
case 3: context.transform(-1, 0, 0, -1, width, height); break; |
|
|
|
|
case 4: context.transform(1, 0, 0, -1, 0, height); break; |
|
|
|
|
case 5: context.transform(0, 1, 1, 0, 0, 0); break; |
|
|
|
|
case 6: context.transform(0, 1, -1, 0, height, 0); break; |
|
|
|
|
case 7: context.transform(0, -1, -1, 0, height, width); break; |
|
|
|
|
case 8: context.transform(0, -1, 1, 0, 0, width); break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
context.drawImage(img, 0, 0, width, height); |
|
|
|
|