2013-04-08 149 views
3

我使用Java加载图像,并希望将其转换为RGB数组,因此我可以读取每个单个像素的颜色。我在Google上搜索过,但我只找到了如何将彩色数组转换为图像。将图像转换为颜色数组

+0

查看文档http://docs.oracle.com/javase/6/docs/api/java/awt/image/BufferedImage.html,特别是'getRGB()'。 – iamnotmaynard 2013-04-08 14:16:43

+0

如何将图像转换为BufferedImages? – jalgames 2013-04-08 14:20:47

+0

你是如何加载你的'Image'的?最有可能的是,您只需传递一个'BufferedImage'即可。 – iamnotmaynard 2013-04-08 14:36:38

回答

3

以下几行说明的API方法的使用:

BufferedImage bi = ImageIO.read(new File("image.png")); 
int[] data = ((DataBufferInt) bi.getRaster().getDataBuffer()).getData(); 
for (int i = 0 ; i < data.length ; i++) { 
    Color c = new Color(data[i]); 
    // RGB is now accessible as 
    c.getRed(); 
    c.getGreen(); 
    c.getBlue(); 
} 

如果你面对因颜色模型问题,创建一个副本第一

BufferedImage img2 = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_RGB); 

img2.getGraphics().drawImage(bi, 0, 0, null); 

,并在上面的代码中使用IMG2 。

+0

图片我想要转换img链吗? – jalgames 2013-04-08 18:19:01

+0

@ user2241553对不起,这是一个错误,我解决了这个问题。 – stacker 2013-04-08 19:59:17

+0

为什么'data.length'大于'img.width * img.height'? – 2015-11-26 22:27:49