2012-04-07 11 views
3

私は、アルファ(グラデーション)を持つPNGを生成し、java内でプログラムで描画することを期待しているプロジェクトを開始しようとしています。Javaでアルファ画像を作成する

単純な例として、ボックスを描画してドロップシャドウを追加し、これをPNGファイルに保存してから別のグラフィックにオーバーレイすることができます。

  1. これは標準のJREシステムライブラリで可能ですか?
  2. このライブラリはどのような操作を簡単にするでしょうか?

ありがとう。

+1

[画像の操作](http://docs.oracle.com/javase/tutorial/2d/images/index.html) – Jeffrey

+0

Javaのアルファマスクに関する質問はこちらhttp://stackoverflow.com/questions/ 221830/set-bufferedimage-alpha-mask-in-java – Patrick

+0

ジェフリーに感謝しています... – pstanton

答えて

5

これは標準のJREシステムライブラリで可能ですか?

はい、可能ですし、かなりシンプルです。ライブラリは操作の簡単な、この種のになるだろう

screenshot

public static void main(String[] args) throws IOException { 

    int x = 50, y = 50, w = 300, h = 200; 

    // draw the "shadow" 
    BufferedImage img = new BufferedImage(400, 300, BufferedImage.TYPE_INT_ARGB); 
    Graphics g = img.getGraphics(); 
    g.setColor(Color.BLACK); 
    g.fillRect(x + 10, y + 10, w, h); 

    // blur the shadow 
    BufferedImageOp op = getBlurredOp(); 
    img = op.filter(img, null); 

    // draw the box 
    g = img.getGraphics(); 
    g.setColor(Color.RED); 
    g.fillRect(x, y, w, h); 

    // write it to disk 
    ImageIO.write(img, "png", new File("test.png")); 
} 

private static BufferedImageOp getBlurredOp() { 

    float[] matrix = new float[400]; 
    for (int i = 0; i < 400; i++) 
     matrix[i] = 1.0f/400.0f; 

    return new ConvolveOp(new Kernel(20, 20, matrix), 
          ConvolveOp.EDGE_NO_OP, null); 
} 

:以下のコードは、この画像(透過PNG)を生成しますか?

私はあなたの他のユースケースによって異なると言います。ボックスや楕円形のような単純な形状の場合、私は上記の解決策に行くでしょう、ライブラリは必要ありません。

+0

偉大な答え、私はこのブログhttp://www.jhlabs.com/ip/blurring.htmlとぼかし/ dropshadowのために非常に便利なライブラリ(少しの周りをブラウズ)を発見した。 – pstanton

関連する問題