任何人都知道转换从 <BufferedImage> getRGB(i,j)
返回的 RGBint 值的简单方法变成灰度值?
我打算通过使用它分解它们来简单地平均 RGB 值;
int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
然后平均红、绿、蓝。
但我觉得对于这样一个简单的操作我一定遗漏了一些东西......
在对不同问题做出很好的回答后,我应该弄清楚我想要什么。
我想获取从 getRGB(i,j) 返回的 RGB 值,并将其转换为 0-255 范围内的白色值,表示该像素的“暗度”。
这可以通过平均等方法来完成,但我正在寻找一个 OTS 实现来节省几行代码。
最佳答案
这tutorial显示了 3 种方法:
通过改变ColorSpace
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp op = new ColorConvertOp(cs, null);
BufferedImage image = op.filter(bufferedImage, null);
通过绘制成灰度 BufferedImage
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_BYTE_GRAY);
Graphics g = image.getGraphics();
g.drawImage(colorImage, 0, 0, null);
g.dispose();
通过使用GrayFilter
ImageFilter filter = new GrayFilter(true, 50);
ImageProducer producer = new FilteredImageSource(colorImage.getSource(), filter);
Image image = this.createImage(producer);
关于java - 使用 BufferedImage 从 Java 中的 RGB 色彩空间获取灰度像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499545/