我有一个RGB bufferedImage bImg。
我想将bImg转换为灰度图像。
BufferedImage grayIm=new BufferedImage(bImg.getWidth(null), bImg.getHeight(null), BufferedImage.TYPE_BYTE_GRAY);
我已经尝试过此grayIm,但无法为该grayIm设置灰度值。
最佳答案
一种方法是转换色彩空间(性能不佳):
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 mage = Toolkit.getDefaultToolkit().createImage(producer);
来源:http://www.codebeach.com/2008/03/convert-color-image-to-gray-scale-image.html
编辑:根据马克的评论。
关于java - 将RGB图像转换为灰度图像以减少Java中的内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9131678/