Java 将图像转换为彩色阵列
我用Java加载了一个图像,并想将其转换为RGB数组,以便读取每个像素的颜色。我在Google上搜索过,但只找到了如何将颜色数组转换为图像。以下几行说明了API方法的用法: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
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 );