From 3600f46d03040744c9bdd70b450c2cef4cad8cc2 Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Thu, 28 Aug 2025 17:41:40 +0800 Subject: [PATCH] Fixed optimzied images --- .../components/Optimizer/OptimizeImage.tsx | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/templates/components/Optimizer/OptimizeImage.tsx diff --git a/src/templates/components/Optimizer/OptimizeImage.tsx b/src/templates/components/Optimizer/OptimizeImage.tsx new file mode 100644 index 0000000..4edf349 --- /dev/null +++ b/src/templates/components/Optimizer/OptimizeImage.tsx @@ -0,0 +1,21 @@ +import sharp from 'sharp' + +interface Props { + src: string + size?: number +} + +const convertImage = async (props: Props) => { + const avifOutputPath = `src/templates/images/${props.src.split('.').slice(0, -1).join('.')}.avif` + const webpOutputPath = `src/templates/images/${props.src.split('.').slice(0, -1).join('.')}.webp` + + const avifBuffer = await sharp(`src/assets/images/${props.src}`).avif({ quality: 60 }).resize(props.size).toBuffer() + await sharp(avifBuffer).toFile(avifOutputPath) + + const webpBuffer = await sharp(`src/assets/images/${props.src}`).webp({ quality: 75 }).resize(props.size).toBuffer() + await sharp(webpBuffer).toFile(webpOutputPath) +} + +export default (props: Props) => { + convertImage(props) +}