图像像素替换

时间:2012-05-05 01:15:19

标签: java image rgb pixel

我希望将图像中的像素替换为某种程度的黑色(半黑色),使其变为完全黑色。

执行此操作的方法是setRGB(int x, int y, int rgb)。我知道这个。我不知道的是如何检测半黑的像素。

我尝试过(iBufferedImage):

final int rgb = i.getRGB(x, y);
if (rgb == -16777216) {
    i.setRGB(x, y, -16777216);
}

要做到这一点,但它只用纯黑色替换纯黑色的像素。

我也试过调暗图像,但这也不起作用。

关于如何测试泛黑的任何想法?

我的目标:我正在阅读的图片是细文字。我希望通过这个做出更大胆的文本。

1 个答案:

答案 0 :(得分:4)

您收到的整数表示红色,绿色,蓝色和Alpha值的组合。基本上,您需要:

  • 将该整数分解为其红色,绿色,蓝色值
  • 从这些值中,评估整体亮度"像素

作为一个粗略的实现,你可以这样做:

int pixVal = ... getRGB() as you have
int red = (pixVal >>> 16);
int green = (pixVal >>> 8) & 0xff;
int blue = pixVal & 0xff;
int brightness = (red + green + blue) / 3;
if (brightness < 16) {
  // pixel is black
}

现在,值16是一个粗略值:理想情况下,您可以根据特定图像进行定制。

纯粹主义者也可能会认为感知到的&#34;亮度&#34;像素的字面意思不是红色/绿色/蓝色像素的平均值(因为人眼对这些组件不是同样敏感)。但这是一个粗略的想法。