【发布时间】:2015-04-07 19:55:47
【问题描述】:
我一直在使用 ColorConvertOp 在 Java 中转换灰度图像,但注意到有时它们最终会丢失很多中间色调颜色并且看起来比应有的颜色更暗。我研究了一下,发现 Photoshop 使用黑点补偿 (BPC) 来补偿这个问题。我为 BPC here 找到了一篇文章,但这对我来说有点技术性。 Java 是否使用渲染意图或其他东西本机支持这一点,还是我必须弄清楚如何实现文档中解释的算法?我了解 BPC 的发生是因为绝对黑色是色彩空间中的不同颜色,但我需要使用 BPC 来使图像看起来相同。有什么想法吗?
我目前使用以下代码转换为新的色彩空间。
private void convertToColorSpace(ColorSpace colorSpace) {
RenderingHints hints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
hints.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
hints.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
ColorConvertOp op = new ColorConvertOp(colorSpace, hints);
image = op.filter(image, null);
}
注意: ImageMagick 不是一个选项,因此请不要将其作为答案。
【问题讨论】: