0

ロードしたい30x40ピクセルの.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] =
    }
}
4

2 に答える 2

0

ImageIOJava 5+ で を使用して、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;
于 2012-10-27T07:42:00.533 に答える
0

1 ピクセルが 1 バイトであるという考えがありますが、そうではありません。RGB ピクセルは既に 1 ピクセルあたり 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

TGA http://www.java-tips.org/other-api-tips/jogl/loading-compressed-and-uncompressed-tgas-nehe-tutorial-jogl.html

于 2012-10-27T07:28:23.123 に答える