こんにちは、Java でグレースケールの bmp 画像を整数の 2D 配列 (値は 0 ~ 255) に変換する際に問題があります。
整数 (0-255) の 2D 配列として表示できる pmb 画像があり、その 2D 配列を Java データ構造で表示したい
私はこの方法を試しました:
Image image = ImageIO.read(new File("my_img.bmp"));
BufferedImage img = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_BYTE_GRAY);
Graphics g = img.createGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();
次に、BufferedImage を使用して、次のように int[][] を作成します。
int w = img.getWidth();
int h = img.getHeight();
int[][] array = new int[w][h];
for (int j = 0; j < w; j++) {
for (int k = 0; k < h; k++) {
array[j][k] = img.getRGB(j, k);
}
}
しかし、今ではすべての 2D 配列が "-9211021" などの数字でいっぱいです。
問題は getRGB(j,k) にあると思いますが、解決できるかどうかわかりません。
編集:
RGB がグレースケールではないことはわかっていますが、グレースケールの BufferedImage から単一ピクセルのグレースケール値を取得するにはどうすればよいですか?