【发布时间】:2013-09-12 07:38:32
【问题描述】:
我正在将彩色图像转换为黑白图像。我为此使用 BufferedImage,类型为 TYPE_BYTE_BINARY。但输出图像未正确转换。例如,如果图像包含黑色背景上的蓝色字母,则该部分的结果图像是全黑的。有谁能够帮我?我的代码如下。
//Invert the colormodel
byte[] map = new byte[] { (byte) (255), (byte) (0) };
IndexColorModel colorModel = new IndexColorModel(1, 2, map,
map, map);
BufferedImage bufferedImage = new BufferedImage(
img.getWidth(null), img.getHeight(null),
BufferedImage.TYPE_BYTE_BINARY, colorModel);
Graphics2D g2 = bufferedImage.createGraphics();
g2.drawImage(img, 0, 0, null);
g2.dispose();
【问题讨论】:
-
@MadProgrammer 我在下面发布了一个答案,但我意识到大部分内容都包含在您的链接中。
-
抖动到双色调对于传真来说不是一个好主意,因为它会增加压缩数据的大小。您可能想要使用的是一种动态阈值算法,它可以处理细微的色差并生成好看的图像。
标签: java image bufferedimage tiff