我有一个 30 x 40像素.bmp 文件,我要将其加载到inputData
中,声明如下:
byte[][] inputData = new byte[30][40];
我对编程比较新,所以任何人都可以告诉我应该使用哪些类来进行编程?谢谢!
我不知道如何访问同一个包中的 .bmp 文件,并将相应的(x, y)
位置分配到我的2-D byte array
。到目前为止,我有以下内容:
for (int x = 0; x < inputData.length; x++)
{
for (int y = 0; y < inputData[x].length; y++)
{
// inputData[x][y] =
}
}
答案 0 :(得分:0)
你知道1个像素是1个字节,但事实并非如此。 RGB像素已经是每像素3个字节。 BMP文件也不是像素阵列而是压缩图像。对阵列的简单加载对您没有帮助。你使用一些现成的库会好得多。
看这里:
GIF http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter06/images.html
BMP http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html
答案 1 :(得分:0)
您可以使用Java 5+中的ImageIO
将BMP文件读入BufferedImage
。 BufferedImage
已经可以转换为int[]
在您的情况下,将绿色通道解压缩到字节数组中:
BufferedImage img = ImageIO.read(new File("example.bmp"));
// you should stop here
byte[][] green = new byte[30][40];
for(int x=0; x<30; x++){
for(int y=0; y<40; y++){
int color = img.getRGB(x,y);
//alpha[x][y] = (byte)(color>>24);
//red[x][y] = (byte)(color>>16);
green[x][y] = (byte)(color>>8);
//blue[x][y] = (byte)(color);
}
}
byte[][] inputData = green;