首页 > 解决方案 > 如何使用Sharp压缩PNG

问题描述

我制作了一个使用sharp转换多个图像的项目,但我无法压缩PNG输出。

async function png(element: any, toFile: any){
      await sharp(element)
         .png({compressionLevel: (Math.ceil(Number(req.body.compressionSlider)/10)-1)})
         .resize(Number(req.body.widthSlider), Number(req.body.heightSlider), {
            fit: 'cover',
            position: 'center'})
         .toFile(toFile);
   }

这个函数在“src/app.js”上,它在第 88 行。

对于我使用的每种文件输出格式(JPEG、PNG、WebP、AVIF 和 TIFF),我都有一个方法。它们都可以工作,PNG 也可以,只是不压缩文件。我想也许是我需要安装支持libimagequant编译的libvips,但是我没有找到任何关于这个的信息,所以我不知道这是不是问题,如果是的话,我没有查找有关如何编译这些文件的信息。

为了澄清, (Math.ceil(Number(req.body.compressionSlider)/10)-1) 返回正确的值,我允许从 1 到 100 的数字,所以它实际上返回 0-9 没有任何问题。编译 TypeScript 没有错误,它运行良好。它只是不压缩PNG。

adaptiveFiltering也无济于事,force默认情况下设置为true。

标签: javascriptnode.jstypescriptexpresssharp

解决方案


推荐阅读