mirror of
https://github.com/mastodon/mastodon.git
synced 2024-11-24 14:56:27 +00:00
[Glitch] Resize images by area instead of fixed dimensions
Port WebUI part of 0fb0037ca7
to glitch-soc
This commit is contained in:
parent
ce090a5201
commit
1bae4c4f83
|
@ -1,6 +1,6 @@
|
||||||
import EXIF from 'exif-js';
|
import EXIF from 'exif-js';
|
||||||
|
|
||||||
const MAX_IMAGE_DIMENSION = 1280;
|
const MAX_IMAGE_PIXELS = 1638400; // 1280x1280px
|
||||||
|
|
||||||
const getImageUrl = inputFile => new Promise((resolve, reject) => {
|
const getImageUrl = inputFile => new Promise((resolve, reject) => {
|
||||||
if (window.URL && URL.createObjectURL) {
|
if (window.URL && URL.createObjectURL) {
|
||||||
|
@ -73,18 +73,8 @@ const processImage = (img, { width, height, orientation, type = 'image/png' }) =
|
||||||
const resizeImage = (img, type = 'image/png') => new Promise((resolve, reject) => {
|
const resizeImage = (img, type = 'image/png') => new Promise((resolve, reject) => {
|
||||||
const { width, height } = img;
|
const { width, height } = img;
|
||||||
|
|
||||||
let newWidth, newHeight;
|
const newWidth = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (width / height)));
|
||||||
|
const newHeight = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (height / width)));
|
||||||
if (width > height) {
|
|
||||||
newHeight = height * MAX_IMAGE_DIMENSION / width;
|
|
||||||
newWidth = MAX_IMAGE_DIMENSION;
|
|
||||||
} else if (height > width) {
|
|
||||||
newWidth = width * MAX_IMAGE_DIMENSION / height;
|
|
||||||
newHeight = MAX_IMAGE_DIMENSION;
|
|
||||||
} else {
|
|
||||||
newWidth = MAX_IMAGE_DIMENSION;
|
|
||||||
newHeight = MAX_IMAGE_DIMENSION;
|
|
||||||
}
|
|
||||||
|
|
||||||
getOrientation(img, type)
|
getOrientation(img, type)
|
||||||
.then(orientation => processImage(img, {
|
.then(orientation => processImage(img, {
|
||||||
|
@ -104,7 +94,7 @@ export default inputFile => new Promise((resolve, reject) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
loadImage(inputFile).then(img => {
|
loadImage(inputFile).then(img => {
|
||||||
if (img.width < MAX_IMAGE_DIMENSION && img.height < MAX_IMAGE_DIMENSION) {
|
if (img.width * img.height < MAX_IMAGE_PIXELS) {
|
||||||
resolve(inputFile);
|
resolve(inputFile);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue