2012-02-17 3 views
2

私は2次元アレイと考えてほしい2つのグレースケールPngファイル(http://imgur.com/a/9F7UW)を持っていますので、それらにマスクを適用できます。Javaでintergerの2D配列としてpngファイルを入力する

これを行う最善の方法は何ですか?

可能であれば変換するので、私は自分のプログラムとしてマスクされた画像を表示できます。

これは大学への割り当てです。データを取得する方法を知っていれば、残りの作業を行います。

感謝

答えて

4
try { 
    URL url = new URL("http://i.imgur.com/Ad0AP.png"); 
    Image image = Toolkit.getDefaultToolkit().createImage(url); 
} catch (MalformedURLException e) { 
} catch (IOException e) {} 

あなたは、この使用してBufferedImageImageインスタンスを変換することができます:あなたの後、

public static BufferedImage toBufferedImage(Image image) { 
    if (image instanceof BufferedImage) { 
     // Return image unchanged if it is already a BufferedImage. 
     return (BufferedImage) image; 
    } 

    // Ensure image is loaded. 
    image = new ImageIcon(image).getImage(); 

    BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB); 
    Graphics g = bufferedImage.createGraphics(); 
    g.drawImage(image, 0, 0, null); 
    g.dispose(); 

    return bufferedImage; 
} 

をし、それをループに画像の幅と高さを取得しますあなたが好きなデータ構造に入れることができます。すなわち:

int w = i.getWidth(); 
int h = i.getHeight(); 

int[][] array = new int[w][h]; 
for (int j = 0; j < w; j++) { 
    for (int k = 0; k < h; k++) { 
     array[j][k] = i.getRGB(j, k); // or whatever 
     System.out.println("jk=" + array[j][k]); 
    } 
} 

...残り:)

+1

ただ、この周りのクラスは、うまく機能:)ありがとう建て – Gwilym

+1

のthats素晴らしい、素晴らしいを行います! :) – epoch

関連する問題