小编467*_*3_j的帖子

Java - 将图像转换为黑白 - 失败,颜色鲜艳

我正在尝试将图像转换为仅黑白(不是灰度).

我用过这个:

BufferedImage blackAndWhiteImage = new BufferedImage(
        dWidth.intValue(),
        dHeight.intValue(),
        BufferedImage.TYPE_BYTE_BINARY);
Graphics2D graphics = blackAndWhiteImage.createGraphics();
graphics.drawImage(colourImage, 0, 0, null);

return blackAndWhiteImage;
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到我决定尝试更亮的颜色,例如Google徽标:

GOOGLELOGO

它出来了:

goolgeLogoBroken1

然后我首先尝试通过槽灰度使用:

BufferedImage blackAndWhiteImage2 = new BufferedImage(
        dWidth.intValue(),
        dHeight.intValue(),
        BufferedImage.TYPE_USHORT_GRAY);
Run Code Online (Sandbox Code Playgroud)

并且它似乎保存了蓝色,但不是最亮的(在这种情况下是黄色),并且您可能会看到它的质量下降:

goolgeLogoBroken1

任何建议都非常感谢; 我相信我所追求的是将每种颜色转换为黑色,除了白色(这将是背景颜色),这已经在应用TYPE_BYTE_BINARY去除alpha通道时完成.


编辑: 也许我没有解释清楚:

  • 最终图像必须具有白色背景**1
  • 每种其他颜色都必须转换为黑色

**1 - 在某些情况下,图像实际上是白色的黑色...这很烦人(whiteOnBlackExample),因为它使这个过程变得复杂很多,我将在稍后介绍,现在优先考虑转换"正常"图像.

我做的是,首先剥离alpha通道(如果它存在) - >因此将alpha通道转换为白色; 然后将每个其他颜色转换为黑色

java javafx image awt

7
推荐指数
1
解决办法
1627
查看次数

标签 统计

awt ×1

image ×1

java ×1

javafx ×1