forked from fedi/mastodon
parent
4ea376121a
commit
2b97451168
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue