Java 将图像转换为彩色阵列

Java 将图像转换为彩色阵列,java,arrays,image,colors,Java,Arrays,Image,Colors,我用Java加载了一个图像,并想将其转换为RGB数组,以便读取每个像素的颜色。我在Google上搜索过,但只找到了如何将颜色数组转换为图像。以下几行说明了API方法的用法: BufferedImage bi = ImageIO.read( new File( "image.png" ) ); int[] data = ( (DataBufferInt) bi.getRaster().getDataBuffer() ).getData(); for ( int i = 0 ; i < dat

我用Java加载了一个图像,并想将其转换为RGB数组,以便读取每个像素的颜色。我在Google上搜索过,但只找到了如何将颜色数组转换为图像。

以下几行说明了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();
}

并在上述代码中使用img2。

查看文档,特别是
getRGB()
。如何将图像转换为缓冲图像?如何加载
图像?很可能您只需传递一个
BufferedImage
,或者您可以将
图像
转换为
BufferedImage
。如果你在加载图像的地方发布代码,我可以说得更具体一些。我要转换的图像是否需要img串?@user2241553抱歉,这是个错误,我修正了。为什么
data.length
大于
img.width*img.height
?@GiannisTzagarakis这是因为width*height是像素数,一个像素可以超过一个字节。(RGB值加上类型上的alpha值,例如BuffereImage.type_INT_RGB)
BufferedImage img2 = new BufferedImage( bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_RGB );

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