From a8a63227781c6815532cb7a68699b08fdb0368be Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 19 Nov 2018 11:24:31 +0100 Subject: Optimize image resizing --- server/helpers/image-utils.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'server/helpers') diff --git a/server/helpers/image-utils.ts b/server/helpers/image-utils.ts index 3eaa674ed..da3285b13 100644 --- a/server/helpers/image-utils.ts +++ b/server/helpers/image-utils.ts @@ -1,13 +1,28 @@ import 'multer' import * as sharp from 'sharp' -import { remove } from 'fs-extra' +import { move, remove } from 'fs-extra' async function processImage ( physicalFile: { path: string }, destination: string, newSize: { width: number, height: number } ) { - await sharp(physicalFile.path) + if (physicalFile.path === destination) { + throw new Error('Sharp needs an input path different that the output path.') + } + + const sharpInstance = sharp(physicalFile.path) + const metadata = await sharpInstance.metadata() + + // No need to resize + if (metadata.width === newSize.width && metadata.height === newSize.height) { + await move(physicalFile.path, destination, { overwrite: true }) + return + } + + await remove(destination) + + await sharpInstance .resize(newSize.width, newSize.height) .toFile(destination) -- cgit v1.2.3