Browse Source

feat(asset-server-plugin): Add support for avif image format

Relates to #482
Michael Bromley 3 years ago
parent
commit
1c49143f1d

+ 10 - 0
packages/asset-server-plugin/src/sharp-asset-preview-strategy.ts

@@ -57,6 +57,13 @@ interface SharpAssetPreviewConfig {
      * @since 1.7.0
      */
     gifOptions?: sharp.GifOptions;
+    /**
+     * @description
+     * Set Sharp's options for encoding avif files: https://sharp.pixelplumbing.com/api-output#avif
+     *
+     * @since 1.7.0
+     */
+    avifOptions?: sharp.AvifOptions;
 }
 
 /**
@@ -93,6 +100,7 @@ export class SharpAssetPreviewStrategy implements AssetPreviewStrategy {
         pngOptions: {},
         webpOptions: {},
         gifOptions: {},
+        avifOptions: {},
     };
     private readonly config: Required<SharpAssetPreviewConfig>;
 
@@ -131,6 +139,8 @@ export class SharpAssetPreviewStrategy implements AssetPreviewStrategy {
                             return image.webp(this.config.webpOptions).toBuffer();
                         case 'gif':
                             return image.gif(this.config.jpegOptions).toBuffer();
+                        case 'avif':
+                            return image.avif(this.config.avifOptions).toBuffer();
                         default:
                             return image.toBuffer();
                     }

+ 1 - 1
packages/core/src/config/asset-naming-strategy/default-asset-naming-strategy.ts

@@ -44,7 +44,7 @@ export class DefaultAssetNamingStrategy implements AssetNamingStrategy {
      * See http://sharp.pixelplumbing.com/en/stable/api-output/#tobuffer
      */
     private isSupportedImageFormat(fileName: string): boolean {
-        const imageExtensions = ['.jpg', '.jpeg', '.png', '.webp', '.tiff'];
+        const imageExtensions = ['.jpg', '.jpeg', '.png', '.webp', '.tiff', '.avif', '.gif'];
         const ext = path.extname(fileName);
         return imageExtensions.includes(ext);
     }