1

こんにちは、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 から単一ピクセルのグレースケール値を取得するにはどうすればよいですか?

4

2 に答える 2

0

You can use Catalano Framework. Contains several filters for image processing.

http://code.google.com/p/catalano-framework/

Detail: That's it faster than using WritableRaster.

FastBitmap fb = new FastBitmap(bufferedImage);

int[][] image = new int[fb.getHeight()][fb.getWidth];
fb.toArrayGray(image);

//Do manipulations with image
//...

//Place the image into fastBitmap
fb.arrayToImage(image);

//Retrieve in bufferedImage if you desire.
bufferedImage = fb.toBufferedImage();
于 2013-07-15T13:36:34.513 に答える