mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
fix: run profile picture through thumbnail pipeline (#27890)
* fix: run profile picture through thumbnail pipeline * fix: format
This commit is contained in:
@@ -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;
|
||||
};
|
||||
Reference in New Issue
Block a user