有几种工具可以在不牺牲质量的情况下优化 JPEG,例如jpegtran.exe和Smush.it。我一直在寻找一种通过代码(最好是在.NET 中)来实现它的方法,我目前选择了FreeImage,但我没有得到我想要的结果。
有一个JPEG_OPTIMIZE
标志,但您还必须设置一个质量标志,然后它就不再是无损的了。
这是我尝试过的:
var image = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_JPEG, fileIn, FREE_IMAGE_LOAD_FLAGS.JPEG_ACCURATE);
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JPEG, image, fileOut, FREE_IMAGE_SAVE_FLAGS.JPEG_OPTIMIZE);
但它会进行压缩。我认为 FreeImage 可以优化(通过去除元数据等),但我找不到如何保持相同的压缩/图像质量。正确的方法是什么?
编辑:对于无法优化 JPEG 存在一些困惑,简短的回答是可以,因为您可以去除未使用的元数据。我不是在谈论压缩。请参阅这些线程或查看 Michael B 的答案。
用于网络上使用的图像(jpg、gif 和 png)的图像优化器
问题是:可以用 FreeImage 完成吗?如果可以:如何?