c# - 使用 FreeImage 对 JPEG 进行无损优化

标签 c# .net jpeg freeimage

有几种工具可以在不牺牲质量的情况下优化 JPEG,例如 jpegtran.exeSmush.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?

Tool for Image compression

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/

相关文章:

android - 从android中的JPEG header 中提取曝光时间

c# - ASP.NET Core依赖注入(inject): The Difference Between Factory and Instance?

c# - 如何从 C# 中的 3x3 单应矩阵获取旋转、平移、剪切

c# - 如何使用异步调用 WCF 关闭客户端代理

.net - 在网站中注销用户后,他丢失了上一个 session 的用户保存数据

algorithm - 通过低带宽连接上的补丁程序增量传输大图像

c# - 如何使用 C# 禁用 Windows 文本框上的右键单击上下文菜单?

c# - ILMerge问题

c# - 如何将列表绑定(bind)到dataGridView?

css - jpg 在 Windows 7 上的 firefox 6 和 7 中看起来不同