fix: run profile picture through thumbnail pipeline (#27890)

* fix: run profile picture through thumbnail pipeline

* fix: format
This commit is contained in:
bo0tzz
2026-04-17 22:15:59 +02:00
committed by GitHub
parent dbf30b77bf
commit a46e46452c
5 changed files with 136 additions and 24 deletions
+40
View File
@@ -0,0 +1,40 @@
import { join } from 'node:path';
import { SystemConfig } from 'src/config';
import { StorageCore } from 'src/cores/storage.core';
import { StorageFolder } from 'src/enum';
import { CryptoRepository } from 'src/repositories/crypto.repository';
import { MediaRepository } from 'src/repositories/media.repository';
type Repos = {
media: MediaRepository;
crypto: CryptoRepository;
storageCore: StorageCore;
};
export const generateProfileImage = async (
{ media, crypto, storageCore }: Repos,
{ image }: SystemConfig,
userId: string,
input: string | Buffer,
): Promise<string> => {
const outputPath = join(
StorageCore.getFolderLocation(StorageFolder.Profile, userId),
`${crypto.randomUUID()}.${image.thumbnail.format}`,
);
storageCore.ensureFolders(outputPath);
await media.generateThumbnail(
input,
{
colorspace: image.colorspace,
format: image.thumbnail.format,
quality: image.thumbnail.quality,
progressive: image.thumbnail.progressive,
size: image.thumbnail.size,
processInvalidImages: false,
},
outputPath,
);
return outputPath;
};