X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fimage-utils.ts;h=ebb102a0dec1960e3a58638e9e3d7ee0d53f3620;hb=4e56f0fff12ab9840574e7a27277fc78b195b3e2;hp=9d0c09051788ef51bbb9e947a396cb3da98b4802;hpb=ab4b8974997777373a6032073f9c1aaf33ba9931;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/image-utils.ts b/server/helpers/image-utils.ts index 9d0c09051..ebb102a0d 100644 --- a/server/helpers/image-utils.ts +++ b/server/helpers/image-utils.ts @@ -114,10 +114,12 @@ async function autoResize (options: { }) { const { sourceImage, newSize, destination } = options - // Portrait mode targetting a landscape, apply some effect on the image + // Portrait mode targeting a landscape, apply some effect on the image const sourceIsPortrait = sourceImage.getWidth() < sourceImage.getHeight() const destIsPortraitOrSquare = newSize.width <= newSize.height + removeExif(sourceImage) + if (sourceIsPortrait && !destIsPortraitOrSquare) { const baseImage = sourceImage.cloneQuiet().cover(newSize.width, newSize.height) .color([ { apply: 'shade', params: [ 50 ] } ]) @@ -144,6 +146,7 @@ function skipProcessing (options: { const { sourceImage, newSize, imageBytes, inputExt, outputExt } = options const { width, height } = newSize + if (hasExif(sourceImage)) return false if (sourceImage.getWidth() > width || sourceImage.getHeight() > height) return false if (inputExt !== outputExt) return false @@ -154,3 +157,11 @@ function skipProcessing (options: { return imageBytes <= 15 * kB } + +function hasExif (image: Jimp) { + return !!(image.bitmap as any).exifBuffer +} + +function removeExif (image: Jimp) { + (image.bitmap as any).exifBuffer = null +}