私は、アルファ(グラデーション)を持つPNGを生成し、java内でプログラムで描画することを期待しているプロジェクトを開始しようとしています。Javaでアルファ画像を作成する
単純な例として、ボックスを描画してドロップシャドウを追加し、これをPNGファイルに保存してから別のグラフィックにオーバーレイすることができます。
- これは標準のJREシステムライブラリで可能ですか?
- このライブラリはどのような操作を簡単にするでしょうか?
ありがとう。
私は、アルファ(グラデーション)を持つPNGを生成し、java内でプログラムで描画することを期待しているプロジェクトを開始しようとしています。Javaでアルファ画像を作成する
単純な例として、ボックスを描画してドロップシャドウを追加し、これをPNGファイルに保存してから別のグラフィックにオーバーレイすることができます。
ありがとう。
これは標準のJREシステムライブラリで可能ですか?
はい、可能ですし、かなりシンプルです。ライブラリは操作の簡単な、この種のになるだろう
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)を生成しますか?
私はあなたの他のユースケースによって異なると言います。ボックスや楕円形のような単純な形状の場合、私は上記の解決策に行くでしょう、ライブラリは必要ありません。
偉大な答え、私はこのブログhttp://www.jhlabs.com/ip/blurring.htmlとぼかし/ dropshadowのために非常に便利なライブラリ(少しの周りをブラウズ)を発見した。 – pstanton
[画像の操作](http://docs.oracle.com/javase/tutorial/2d/images/index.html) – Jeffrey
Javaのアルファマスクに関する質問はこちらhttp://stackoverflow.com/questions/ 221830/set-bufferedimage-alpha-mask-in-java – Patrick
ジェフリーに感謝しています... – pstanton