javascript - 如何使用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。
解决方案
推荐阅读
- java - 当我有子查询时,通过在 java 中使用 prepare 语句在运行时向查询添加条件
- python - 使用 sklearn learn 对列表列表进行矢量化?
- python - 我写了一个简单的石头剪刀布程序,但我想在三个中做到最好,不知道如何将它写到我现有的代码中
- .htaccess - 如何将包含静态和动态变量的 URL 重定向到动态 URL
- laravel - 如何向 laravel-passport 访问令牌添加自定义声明?
- graphite - Graphite django-admin.py raise ImproperlyConfigured("SECRET_KEY 设置不能为空或没有名为 'graphite' 的模块
- java - 首次启动时将活动设为默认活动
- apache-kafka - 具有单个 Kafka 消费者的负载平衡节点 js 应用程序
- javascript - 如何在 Angular Universal 中降低服务器端渲染的成本
- python - 如何提取两个角色之间的兴趣值?