don't recompress animated images, #1585

This commit is contained in:
zadam 2021-01-28 20:17:57 +01:00
parent 48b7108da0
commit 2dc742f5b8
5 changed files with 32 additions and 21 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

35
package-lock.json generated
View File

@ -1769,9 +1769,9 @@
"dev": true
},
"caniuse-lite": {
"version": "1.0.30001179",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz",
"integrity": "sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA==",
"version": "1.0.30001180",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001180.tgz",
"integrity": "sha512-n8JVqXuZMVSPKiPiypjFtDTXc4jWIdjxull0f92WLo7e1MSi3uJ3NvveakSh/aCl1QKFAvIz3vIj0v+0K+FrXw==",
"dev": true
},
"caseless": {
@ -2634,9 +2634,9 @@
}
},
"electron": {
"version": "9.4.1",
"resolved": "https://registry.npmjs.org/electron/-/electron-9.4.1.tgz",
"integrity": "sha512-r4CxoVG9Ja7tBtkilWMnBsBGup8G8Z+v7icZmwysHa8/OSr0OrLjrcOF/30BAP7yPE5fz/XTxygnltzW4OTZdw==",
"version": "9.4.2",
"resolved": "https://registry.npmjs.org/electron/-/electron-9.4.2.tgz",
"integrity": "sha512-WpnJLDFHtj5eIewAi4hMHxGdbwkzjzmxsMu/BtDFCic3wpruchkskL7EV28Sg/IYTAqo6yN5ISfnFaQcLsIdng==",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
@ -3208,9 +3208,9 @@
}
},
"electron-to-chromium": {
"version": "1.3.645",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.645.tgz",
"integrity": "sha512-T7mYop3aDpRHIQaUYcmzmh6j9MAe560n6ukqjJMbVC6bVTau7dSpvB18bcsBPPtOSe10cKxhJFtlbEzLa0LL1g==",
"version": "1.3.646",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.646.tgz",
"integrity": "sha512-P+3q8ugIPezulqoBYaLoUsF0fT4YNpe+zEDmdDUDnHZUAeSbBjMbis+JjJp9duU8BdfWV3VXf27NTBcwhRTsAQ==",
"dev": true
},
"electron-window-state": {
@ -4431,6 +4431,11 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-animated": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-animated/-/is-animated-2.0.1.tgz",
"integrity": "sha512-f61go8/mYdl6g7JOLbi6YtiJ1AKM9TFdNv2bVP7JlAHm5MPjnvveOkKPlm51beF9ulb5hsGeoqdSXrjJ7RNKHg=="
},
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@ -6525,9 +6530,9 @@
}
},
"sanitize-html": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.3.1.tgz",
"integrity": "sha512-JYziKrrtCEGhrsUAZK1mL0RdEcRxBGZ+ptgppv7ulAsan7MZVL+oVKRSPCIcYinfM1rVOMYh5dHLydMuHaQOUA==",
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.3.2.tgz",
"integrity": "sha512-p7neuskvC8pSurUjdVmbWPXmc9A4+QpOXIL+4gwFC+av5h+lYCXFT8uEneqsFQg/wEA1IH+cKQA60AaQI6p3cg==",
"requires": {
"deepmerge": "^4.2.2",
"escape-string-regexp": "^4.0.0",
@ -7680,9 +7685,9 @@
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
},
"webpack": {
"version": "5.17.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.17.0.tgz",
"integrity": "sha512-R+IdNEaYcYaACpXZOt7reyc8txBK7J06lOPkX1SbgmeoAnUbyBZivJIksrDBnmMA3wlTWvPcX7DubxELyPB8rA==",
"version": "5.18.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.18.0.tgz",
"integrity": "sha512-RmiP/iy6ROvVe/S+u0TrvL/oOmvP+2+Bs8MWjvBwwY/j82Q51XJyDJ75m0QAGntL1Wx6B//Xc0+4VPP/hlNHmw==",
"dev": true,
"requires": {
"@types/eslint-scope": "^3.7.0",

View File

@ -48,6 +48,7 @@
"https-proxy-agent": "5.0.0",
"image-type": "4.1.0",
"ini": "2.0.0",
"is-animated": "^2.0.1",
"is-svg": "4.2.1",
"jimp": "0.16.1",
"jsdom": "^16.4.0",
@ -60,7 +61,7 @@
"request": "^2.88.2",
"rimraf": "3.0.2",
"sanitize-filename": "1.6.3",
"sanitize-html": "2.3.1",
"sanitize-html": "2.3.2",
"sax": "1.2.4",
"semver": "7.3.4",
"serve-favicon": "2.5.0",
@ -77,7 +78,7 @@
},
"devDependencies": {
"cross-env": "7.0.3",
"electron": "9.4.1",
"electron": "9.4.2",
"electron-builder": "22.9.1",
"electron-packager": "15.2.0",
"electron-rebuild": "2.3.4",
@ -86,7 +87,7 @@
"jsdoc": "3.6.6",
"lorem-ipsum": "2.0.3",
"rcedit": "3.0.0",
"webpack": "5.17.0",
"webpack": "5.18.0",
"webpack-cli": "4.4.0"
},
"optionalDependencies": {

View File

@ -11,6 +11,7 @@ const imageType = require('image-type');
const sanitizeFilename = require('sanitize-filename');
const noteRevisionService = require('./note_revisions.js');
const isSvg = require('is-svg');
const isAnimated = require('is-animated');
async function processImage(uploadBuffer, originalName, shrinkImageSwitch) {
const origImageFormat = getImageType(uploadBuffer);
@ -19,6 +20,10 @@ async function processImage(uploadBuffer, originalName, shrinkImageSwitch) {
// JIMP does not support webp at the moment: https://github.com/oliver-moran/jimp/issues/144
shrinkImageSwitch = false;
}
else if (isAnimated(uploadBuffer)) {
// recompression of animated images will make them static
shrinkImageSwitch = false;
}
const finalImageBuffer = shrinkImageSwitch ? await shrinkImage(uploadBuffer, originalName) : uploadBuffer;