【问题标题】:How do you determine if an image (java.awt.Image) is B&W, with no color?您如何确定图像(java.awt.Image)是否是黑白的,没有颜色?
【发布时间】:2011-04-11 20:14:50
【问题描述】:

我正在尝试确定图像是否是简单的黑白图像,或者它是否有颜色(使用 Java)。如果它有颜色,我需要向用户显示颜色将丢失的警告消息。

【问题讨论】:

    标签: java image-processing colors


    【解决方案1】:

    BufferedImage 类有一个方法int getRGB(int x, int y),它返回一个十六进制整数,表示 (x, y) 处像素的颜色(以及另一个返回像素矩阵的方法)。从中可以得到 r、g 和 b 值,如下所示:

    int r = (0x00ff0000 & rgb) >> 16;
    int g = (0x0000ff00 & rgb) >> 8;
    int b = (0x000000ff & rgb);

    然后检查它们对于图像中的每个像素是否都相等。如果每个像素的 r == g == b,那么它是灰度的。

    这是首先想到的。我不确定在读取图像时是否会设置某种灰度标志。

    【讨论】:

    • 我实际上只担心纯黑白(不是灰度)与其他任何东西。那么在那种情况下,我会只担心 r、g 和 b 都等于 255 还是都等于 0 吗?
    • 是的,应该是这样。虽然如果你制作一个没有透明度的 BufferedImage(例如,TYPE_INT_RGB),那么你可以只检查像素 == 0xFFFFFF 或 0x0 并保存几行。
    猜你喜欢
    • 2021-04-14
    • 2012-04-04
    • 1970-01-01
    • 2021-07-19
    • 2013-06-22
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多