From 9bc2e028d4593baf6e8f770d9d792611ea747fd3 Mon Sep 17 00:00:00 2001 From: Nathan Reed Date: Mon, 22 Jul 2024 19:24:16 +0000 Subject: [PATCH] feat: replace formatQuality with formatOptions in config file formatQuality is more flexible and allows configuration of more than just quality for all formats. JPEG and WebP still have only their quality configurable. PNG has all the configuration options from the sharp library exposed. Signed-off-by: Nathan Reed --- src/serve_rendered.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/serve_rendered.js b/src/serve_rendered.js index a159997..513a042 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -504,14 +504,23 @@ const respondImage = ( image.composite(composites); } - const formatQuality = (options.formatQuality || {})[format]; + const formatOptions = (options.formatOptions || {})[format] || {}; if (format === 'png') { - image.png({ adaptiveFiltering: false }); + image.png({ + progressive: formatOptions.progressive, + compressionLevel: formatOptions.compressionLevel, + adaptiveFiltering: formatOptions.adaptiveFiltering, + palette: formatOptions.palette, + quality: formatOptions.quality, + effort: formatOptions.effort, + colors: formatOptions.colors, + dither: formatOptions.dither, + }); } else if (format === 'jpeg') { - image.jpeg({ quality: formatQuality || 80 }); + image.jpeg({ quality: formatOptions.quality || 80 }); } else if (format === 'webp') { - image.webp({ quality: formatQuality || 90 }); + image.webp({ quality: formatOptions.quality || 90 }); } image.toBuffer((err, buffer, info) => { if (!buffer) {