X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fimage-utils.ts;h=3ebf073058bd1f85e00abc49d5a59748ed4c81a3;hb=ba5d4a849c7d7ba05f093480ae12286c4af61556;hp=f2f6a004f7ede83514013810f956ab1b73830c7c;hpb=187822421489ae811d118d15aa2d8361183250c2;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/image-utils.ts b/server/helpers/image-utils.ts index f2f6a004f..3ebf07305 100644 --- a/server/helpers/image-utils.ts +++ b/server/helpers/image-utils.ts @@ -1,5 +1,6 @@ import { remove, rename } from 'fs-extra' -import { convertWebPToJPG } from './ffmpeg-utils' +import { extname } from 'path' +import { convertWebPToJPG, processGIF } from './ffmpeg-utils' import { logger } from './logger' const Jimp = require('jimp') @@ -10,18 +11,39 @@ async function processImage ( newSize: { width: number, height: number }, keepOriginal = false ) { + const extension = extname(path) + if (path === destination) { - throw new Error('Jimp needs an input path different that the output path.') + throw new Error('Jimp/FFmpeg needs an input path different that the output path.') } logger.debug('Processing image %s to %s.', path, destination) + // Use FFmpeg to process GIF + if (extension === '.gif') { + await processGIF(path, destination, newSize) + } else { + await jimpProcessor(path, destination, newSize) + } + + if (keepOriginal !== true) await remove(path) +} + +// --------------------------------------------------------------------------- + +export { + processImage +} + +// --------------------------------------------------------------------------- + +async function jimpProcessor (path: string, destination: string, newSize: { width: number, height: number }) { let jimpInstance: any try { jimpInstance = await Jimp.read(path) } catch (err) { - logger.debug('Cannot read %s with jimp. Try to convert the image using ffmpeg first.', { err }) + logger.debug('Cannot read %s with jimp. Try to convert the image using ffmpeg first.', path, { err }) const newName = path + '.jpg' await convertWebPToJPG(path, newName) @@ -36,12 +58,4 @@ async function processImage ( .resize(newSize.width, newSize.height) .quality(80) .writeAsync(destination) - - if (keepOriginal !== true) await remove(path) -} - -// --------------------------------------------------------------------------- - -export { - processImage }