禁用 Java ImageIO 色度二次采样
Posted
技术标签:
【中文标题】禁用 Java ImageIO 色度二次采样【英文标题】:Disable Java ImageIO Chroma Subsampling 【发布时间】:2012-12-18 10:54:37 【问题描述】:我正在尝试使用 ImageIO 将 BufferedImage 保存为 JPEG。但是,即使使用 100 质量进行保存,由于色度子采样,我也会遭受质量损失。
我已通过恢复到较旧的 JAI 库并将水平和垂直二次采样显式设置为 1 成功解决了此问题。 然而,一个关键要求是我将图像保存为渐进式,JAI 似乎不支持。
有没有办法使用较新的 ImageWriter 禁用子采样?
提前致谢
如果可能,我想避免使用 ImageMagick
【问题讨论】:
经过广泛搜索图像写入/质量/压缩问题。 “使用 ImageMagick”似乎是一个常见的答案。理想情况下,我想知道这在 Java 中是否可行,然后再走 ImageMagick 路线。我不反对第三方库,只要它们是轻量级和可靠的。 感谢您的澄清。也许该信息应该是edited 进入问题。 【参考方案1】:阅读JPEG Metadata Format Specification and Usage Notes 似乎表明可以通过使用自定义IIOMetadata
编写图像来实现。
在互联网上搜索会出现https://codereview.appspot.com/3082041/patch/204004/210007,它似乎正是以这种方式使用 ImageIO。
我没有尝试过,不知道它是否真的有效。
【讨论】:
非常感谢您。我已经设法通过使用 IIOMetadata 使其工作,与旧的 JAI 相比,性能令人震惊,但现在可以了。以上是关于禁用 Java ImageIO 色度二次采样的主要内容,如果未能解决你的问题,请参考以下文章
如何确定 Media Foundation 中特定 MJPEG 子类型的色度子采样?