From 79cb7e5c458a84ef1e58bf2c547a39cd2992ebdd Mon Sep 17 00:00:00 2001 From: Tuukka Haapasalo Date: Sun, 3 Mar 2024 10:14:10 +0200 Subject: [PATCH] Do not trim all uploaded images --- src/server/content/ImageManager.ts | 21 ++++++++++++--------- src/server/data/ShortcutService.ts | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/server/content/ImageManager.ts b/src/server/content/ImageManager.ts index 2f852fe9..f811efa8 100644 --- a/src/server/content/ImageManager.ts +++ b/src/server/content/ImageManager.ts @@ -42,6 +42,7 @@ export interface ImageManagerOptions { type StringKey = keyof V & string; interface SaveImageOptions { + trim?: boolean; margin?: number; fit?: keyof sharp.FitEnum; } @@ -97,17 +98,19 @@ export class ImageManager> { private async saveImage>( variant: K, file: FileUploadResult, - { margin, fit }: SaveImageOptions = {}, + { margin, fit, trim }: SaveImageOptions = {}, ): Promise { const info = this.getVariant(variant, file.filename, '.webp'); - let imgTransform = sharp(file.filepath) - .trim() - .resize({ - width: info.width, - height: info.height, - fit: fit ?? 'contain', - background: 'transparent', - }); + let imgTransform = sharp(file.filepath); + if (trim) { + imgTransform = imgTransform.trim(); + } + imgTransform = imgTransform.resize({ + width: info.width, + height: info.height, + fit: fit ?? 'contain', + background: 'transparent', + }); if (margin) { const marginPx = margin * info.scale; logger.debug(`Adding ${marginPx}px margin to image`); diff --git a/src/server/data/ShortcutService.ts b/src/server/data/ShortcutService.ts index d778c34b..af1f552c 100644 --- a/src/server/data/ShortcutService.ts +++ b/src/server/data/ShortcutService.ts @@ -108,7 +108,7 @@ export async function uploadShortcutIcon( try { await getShortcutById(tx, groupId, userId, shortcutId); logger.info(image, `Updating shortcut icon for user ${userId}, shortcut ${shortcutId}`); - const file = await shortcutImageHandler.saveImages(image, { margin }); + const file = await shortcutImageHandler.saveImages(image, { margin, trim: true }); await deleteShortcutIcon(tx, groupId, userId, shortcutId); await setShortcutIconById(tx, shortcutId, file); return getShortcutById(tx, groupId, userId, shortcutId);