【问题标题】:Compress .png file压缩 .png 文件
【发布时间】:2017-01-28 17:31:28
【问题描述】:

我有几个非常大的 .png 文件,我想压缩它们以减小大小,尽量保持它们的质量。也许一种方法是将 png 从 32 位转换为 24 位 (Convert 32bit PNG file to 24bit PNG file)?

我觉得简单快捷的唯一想法是https://tinypng.com/,但以不同的方式压缩文件(有些数字轻了 45%,但其他数字相同,大小没有变化)。

【问题讨论】:

  • 这就是压缩同时避免/最小化质量损失的问题:它在某些图像上比在其他图像上效果更好,有时根本不行。转换为优质 jpg 后,您的材料是否仍能保持足够的质量?
  • 不幸的是我不能使用 jpg 转换。我应该保留自己的 png 格式。我发现这很重要*.com/questions/27267073/…
  • 这个问题有什么更新吗?

标签: image image-processing compression png


【解决方案1】:

如果你熟悉Node.js,可以使用optimage package进行图片压缩。

例如

var optimage = require('optimage');

optimage({
    inputFile: "test.png",
    outputFile: "test.min.png"
}, function(err, res){
    // res.inputFile 
    // res.outputFile 
    // res.saved 
});

如果你熟悉 gulp,也可以使用gulp-imagemin

例子

const gulp = require('gulp');
const imagemin = require('gulp-imagemin');

gulp.task('default', () =>
    gulp.src('src/images/*')
        .pipe(imagemin())
        .pipe(gulp.dest('dist/images'))
);

还有许多其他方法可以执行图像压缩,具体取决于您选择的技术堆栈。大多数工具都会提供调整压缩率和图像质量的参数,您需要阅读它们的文档。

【讨论】:

  • 非常感谢,我更喜欢何时以及是否可以保持图像的大小相同。使用 tinypng 是可能的,因为我认为它适用于调色板(从 32 到 16)。 gulp也是这样吗?
  • 我不认为 optimage 或 gulp 会改变图像大小:)