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

DATE : 2017/09/20 (Wed)
×

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


DATE : 2006/09/14 (Thu)

前回の記事

メソッドの抽出 (2)

前回に続いて、「3 : 2の WritableRaster の色成分を設定」の部分

// 色成分のバンド番号の配列
int[] colorBandList = getColorBandList(destRaster.getNumBands());
// 色成分のみの WritableRaster
WritableRaster colorRaster = destRaster.
	createWritableChild(0, 0, width, height,
		0, 0, colorBandList);
colorRaster.setRect(image.getData());

を、setColorSamples メソッドに抽出します。

/**
 * 指定の WritableRaster の色成分を設定します。
 *
 * @param dest 色成分を設定する WritableRaster
 * @param src 色成分を表す Raster
 */
private static void setColorSamples(WritableRaster dest, Raster src) {
	WritableRaster colorRaster = dest.createWritableChild(
		0, 0, dest.getWidth(), dest.getHeight(),
			0, 0, getColorBandList(dest.getNumBands()));

	colorRaster.setRect(src);
}

colorBandList に格納する配列を生成するメソッド getColorBandList を、dest.createWritableChild メソッドの引数に埋め込みました。

ここで、 getColorBandList というメソッド名は分かりにくいので、分かりやすい名前に変更します。このメソッドの中身は、次の通りでした。

private static int[] getColorBandList(int numBands) {
	int[] bands = new int[numBands - 1];
	
	for (int i = 0; i < bands.length; i++) {
		bands[i] = i;
	}
	
	return bands;
}

アルファ成分を格納するバンドはバンド列中の最後となっています。そのため、アルファ成分のバンドを除いたバンド列の配列を返します。「アルファ成分のバンドを除く」という部分を強調して、getColorBandList から getBandListExceptAlpha にメソッド名を変更します。

また、バンド列を扱うのは Raster(WritableRaster)のみなので、getBandListExceptAlpha メソッドの引数は Raster にして、メソッドの中でバンド数を取得することにします。

/**
 * 指定のバンド数から、アルファ成分を除いたバンド番号の配列を
 * 返します。
 * 
 * @param raster アルファ成分を除いたバンド番号の配列を取得する Raster
 * @return アルファ成分を除いたバンド番号の配列
 */
private static int[] getBandListExceptAlpha(Raster raster) {
	int[] bandList = new int[raster.getNumBands() - 1];
	
	for (int i = 0; i < bandList.length; i++) {
		bandList[i] = i;
	}
	
	return bandList;
}

すると、setColorSamples メソッドは次のようになります。

/**
 * 指定の WritableRaster の色成分を設定します。
 *
 * @param dest 色成分を設定する WritableRaster
 * @param src 色成分を表す Raster
 */
private static void setColorSamples(WritableRaster dest, Raster src) {
	WritableRaster colorRaster = dest.createWritableChild(
		0, 0, dest.getWidth(), dest.getHeight(),
			0, 0, getBandListExceptAlpha(dest));

	colorRaster.setRect(src);
}

そして、「3 : 2の WritableRaster の色成分を設定」の部分は次のように変わります。

setColorSamples(destRaster, image.getData());

つづきます

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
08 2017/09 10
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)
ブログ内検索
最近の状況
リンク
カレンダー
08 2017/09 10
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)