diff --git a/src/http/schemas/transformations.ts b/src/http/schemas/transformations.ts index 51dabd32e..907dd154a 100644 --- a/src/http/schemas/transformations.ts +++ b/src/http/schemas/transformations.ts @@ -2,6 +2,6 @@ export const transformationOptionsSchema = { height: { type: 'integer', examples: [100], minimum: 0 }, width: { type: 'integer', examples: [100], minimum: 0 }, resize: { type: 'string', enum: ['cover', 'contain', 'fill'] }, - format: { type: 'string', enum: ['origin'] }, + format: { type: 'string', enum: ['origin', 'avif'] }, quality: { type: 'integer', minimum: 20, maximum: 100 }, } as const diff --git a/src/storage/renderer/image.ts b/src/storage/renderer/image.ts index 540a3dfa6..e9df5ccbd 100644 --- a/src/storage/renderer/image.ts +++ b/src/storage/renderer/image.ts @@ -14,7 +14,7 @@ export interface TransformOptions { width?: number height?: number resize?: 'cover' | 'contain' | 'fill' - format?: 'origin' + format?: 'origin' | 'avif' quality?: number } @@ -194,6 +194,10 @@ export class ImageRenderer extends Renderer { segments.push(`quality:${options.quality}`) } + if (options.format && options.format !== 'origin') { + segments.push(`format:${options.format}`) + } + return segments }