【发布时间】:2014-07-16 23:05:34
【问题描述】:
我正在将图像颜色分类为二维颜色数组(行/列)。我已经实现了PixelGrabber,但我无法准确理解正在发生的事情,以及我可以用data 做什么来排序到二维数组。谢谢!
File file = fc.getSelectedFile();
try {
BufferedImage img = ImageIO.read(file);
PixelGrabber grabber = new PixelGrabber(img, 0, 0, -1, -1, false);
if (grabber.grabPixels()) {
int width = grabber.getWidth();
int height = grabber.getHeight();
int[][] imageColors = new int[width][height]; //I want to store colors in here
int[] data = (int[]) grabber.getPixels();
}
} catch (Exception f) {
}
【问题讨论】:
-
有一个example in the JavaDocs 演示了如何从像素数据中提取颜色分量。您也可以将其与this example 混合使用
-
int alpha = (pixel >> 24) & 0xff;中的>>操作符有什么作用? -
从packed int中提取颜色分量,这里提取颜色的alpha分量
-
我真的建议不要将
PixelGrabber与BufferedImage一起使用。这真的只是做与img.getRGB(0, 0, w, h, null, 0, w)相同的事情的一种非常缓慢的方式。PixelGrabber类旨在与旧的ImageProducer/ConsumerAPI 一起使用。
标签: java image swing image-processing