忍者ブログ
[159] [158] [157] [156] [155] [154] [153] [152] [151] [150] [149]

DATE : 2017/06/27 (Tue)
×

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


DATE : 2006/09/12 (Tue)

前回の記事

メソッドの抽出 (1)

前回の記事では、処理手順の通りに処理を並び替えました。

そこで、並び替えた処理をメソッドに抽出します。

まずは、「1 : アルファチャンネル付きのカラーモデルの生成」の部分

// 対象画像のカラースペース
ColorSpace sourceColorSpace = image.getColorModel().getColorSpace();
// アルファチャンネルのあるカラーモデル
ColorModel destColorModel = new ComponentColorModel(
	sourceColorSpace, true, false,
		Transparency.BITMASK, DataBuffer.TYPE_BYTE);

を、createColorModelWithAlpha メソッドとして抽出します。

/**
 * アルファチャンネルを追加したカラーモデルを生成します。
 * 
 * @param src アルファチャンネルを追加する元となるカラーモデル
 * @return アルファチャンネルを追加したカラーモデル
 * @throws NullPointerException src が null の場合
 */
private static ColorModel createColorModelWithAlpha(ColorModel src) {
	return new ComponentColorModel(src.getColorSpace(), true,
		src.isAlphaPremultiplied(), Transparency.BITMASK,
		src.getTransferType());
}

抽出前のコードには、ColorSpace を格納するローカル変数がありましたが、オブジェクトに問い合わせる形(src.getColorSpace())に変更しました。

また、アルファが直前に乗算されているかどうかやデータの転送型は、引数のカラーモデルに従うように修正しました。

この部分は、メソッドに分けて初めて気が付いた部分です。メソッドに分けると、こういった細かい部分に気が向くので便利ですね( ´∀`)b

すると、「1 : アルファチャンネル付きのカラーモデルの生成」の部分は次のようになります。

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

とてもシンプルになりました。

ちなみに、「2 : 1のカラーモデルを扱える WritableRaster の生成」の部分は、「1のカラーモデルを扱える WritableRaster の生成」という意味がコードそのものに表れているので、メソッドには抽出しません。

WritableRaster destRaster = destColorModel.
	createCompatibleWritableRaster(width, height);

ただし、width, height という変数の中身はコードの上の方に定義されているので読みづらく感じます。そこで、これもオブジェクトに問い合わせる形に変更します。

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

つづきます

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
05 2017/06 07
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
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
05 2017/06 07
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
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)