忍者ブログ
[146] [147] [145] [144] [143] [142] [141] [140] [139] [138] [137]

DATE : 2017/03/30 (Thu)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/08/30 (Wed)

前回の記事

BufferedImage にアルファチャンネルを追加するコード(一部)は、次のようになります。(import 文などは省略してあります)。

ここで、image はアルファチャンネルを追加する対象の画像(RenderedImage)、最後の return 文で返されるオブジェクトが、アルファチャンネルが追加された画像(BufferedImage)です。

// 1
ColorModel destColorModel =
	createColorModelWithAlpha(image.getColorModel());
// 2
WritableRaster destRaster = destColorModel.
	createCompatibleWritableRaster(
		image.getWidth(), image.getHeight());

// 3		
setColorSamples(destRaster, image.getData());
// 4
setAlphaSamples(destRaster);

// 5	
return new BufferedImage(destColorModel, destRaster,
	destColorModel.isAlphaPremultiplied(), null);

コメントで示したとおり、上のコードは5つの手順に分かれています。ここからは、それぞれの手順を細かく見ていくことにします。

1. BufferedImage 用に、アルファチャンネル付きの java.awt.image.ColorModel を生成する

ColorModel destColorModel =
	createColorModelWithAlpha(image.getColorModel());

ここでは、createColorModelWithAlpha メソッドに、対象となる画像のカラーモデルを渡すことでアルファチャンネル付きのカラーモデルを生成しています。

createColorModelWithAlpha メソッドは、次のようなメソッドです。

private static ColorModel createColorModelWithAlpha(ColorModel src) {
	return new ComponentColorModel(src.getColorSpace(), true,
		src.isAlphaPremultiplied(), Transparency.BITMASK,
		src.getTransferType());
}

渡されたカラーモデルと同じ色空間、アルファ値の乗算状態、サンプルの型で、それでいてアルファ値をもつようなカラーモデルを生成しています。

なお、「Transparency.BITMASK」は、透明部分が「完全に不透明、もしくは完全に透明」であることを表します。つまり、アルファ値が1(不透明)か0(透明)かに限定されるわけです。もしも、任意の透明度を設定したい場合は、「Transparency.TRANSLUCENT」にします。(Transparency インタフェースは、java.awt パッケージにあります)

2. BufferedImage 用に、上の ColorModel が扱える java.awt.image.WritableRaster を生成する

WritableRaster destRaster = destColorModel.
	createCompatibleWritableRaster(
		image.getWidth(), image.getHeight());

java.awt.image.ColorModel には、そのカラーモデルが扱える WritableRaster を生成するメソッドがあります。

そのため、ここではそのメソッドを利用することで、生成したカラーモデルが扱える WritableRaster を生成しています。

つづきます

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
02 2017/03 04
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
02 2017/03 04
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)