2011-07-30 6 views
4

私は画像処理に非常に慣れています。私はそれにgetType()を呼び出すときBufferedImage.TYPE_CUSTOMをもたらすPNGイメージ(ImageIO.read()を使用して読まれる)がある。カラーモデル間の変換方法

BufferedImage bi = ImageIO.read(new URL("file:/C:/samp1.png")); 
int type =bi.getType(); //TYPE_CUSTOM for samp1.png 

今私は、次のモデルのいずれかに変換したいと思います:

  1. TYPE_USHORT_GRAY
  2. TYPE_3BYTE_BGR
  3. TYPE_BYTE_GRAY
  4. TYPE_INT_RGB
  5. TYPE_INT_ARGB

上記のタイプのみを認識するライブラリを使用してイメージをさらに処理するには、上記の処理が必要です。私は他のモデルにTYPE_CUSTOMカラーモデルから変換するにはどうすればよい

すべてのヘルプ/ポインタがはるかに高く評価されるだろう。 これを行うための既存のライブラリがない場合、ステップ/アルゴリズムへのリンク/投稿は素晴らしいでしょう。

+0

あなたの質問に印をつけてください。申し訳ありませんが、バディはあなたの質問に言い換えることができますありがとう – doNotCheckMyBlog

+0

@Krioは、明確にするために質問を追加しました。 – Neville

答えて

0

これを試しましたか?

BufferedImage rgbImg = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_RGB); 
+0

これは簡単でした!ありがとう。 – Neville

+5

新しい空白のイメージを作成するだけではありませんか?あなたとエリックは、同じメソッドを選択したように見えますが、グラフィックスオブジェクトを使用してイメージの再描画を行います。より速い方法があると確信しています。AWTファイルや、自分で実装する必要のあるものに埋め込まれていて、getData()によって返されたWritableRasterを変換します。 (つまり、drawImageがこれらのショートカットをそのまま使用しない限り、私はそれを疑っています)。 –

10

これを試してみてください: "?"

public static BufferedImage convert(BufferedImage src, int bufImgType) { 
    BufferedImage img= new BufferedImage(src.getWidth(), src.getHeight(), bufImgType); 
    Graphics2D g2d= img.createGraphics(); 
    g2d.drawImage(src, 0, 0, null); 
    g2d.dispose(); 
    return img; 
} 
私はまだ探しています
+1

この回答が最もうまくいきます。回答としては、空白の画像しか作成されません。それでもデータを埋めなければなりません。 –

関連する問題