有几种工具可以在不牺牲质量的情况下优化 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 的回答。
Library for further lossless jpeg compression
Is there a Windows version of Smush.it available?
Image Optimizer for images used on the web (jpg, gif and png)
问题是:可以用 FreeImage 完成吗?如果可以:怎么做?
最佳答案
我认为 FreeImage 只支持无损转换(即FreeImage_JPEGTransform
)。
这可以保存到不同的文件,但不幸的是,似乎没有办法在新文件上设置任何保存标志以允许剥离元数据等。
我只能建议您查看源代码,看看是否有任何您可以自己利用的东西。
关于c# - 使用 FreeImage 对 JPEG 进行无损优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11403831/