Browse Source

Fallback from AVIF to JPEG/PNG if one of the result dimensions is smaller than 16px

DarthSim 3 years ago
parent
commit
13c14c25e9
2 changed files with 15 additions and 0 deletions
  1. 2 0
      CHANGELOG.md
  2. 13 0
      processing/processing.go

+ 2 - 0
CHANGELOG.md

@@ -1,6 +1,8 @@
 # Changelog
 
 ## [Unreleased]
+### Change
+- Fallback from AVIF to JPEG/PNG if one of the result dimensions is smaller than 16px.
 
 ## [3.5.0] - 2022-04-25
 ### Add

+ 13 - 0
processing/processing.go

@@ -265,6 +265,19 @@ func ProcessImage(ctx context.Context, imgdata *imagedata.ImageData, po *options
 		return nil, err
 	}
 
+	if po.Format == imagetype.AVIF && (img.Width() < 16 || img.Height() < 16) {
+		if img.HasAlpha() {
+			po.Format = imagetype.PNG
+		} else {
+			po.Format = imagetype.JPEG
+		}
+
+		log.Warningf(
+			"Minimal dimension of AVIF is 16, current image size is %dx%d. Image will be saved as %s", 
+			img.Width(), img.Height(), po.Format,
+		)
+	}
+
 	var (
 		outData *imagedata.ImageData
 		err     error