画像の加工 part1
今回から三回にわたって、画像をそのまま表示するのではなく、エフェクトブースターの機能で加工して表示する方法を説明します。
これは、特にアニメーションと関連が深い内容です。
あらかじめ加工済みの画像を用いればエフェクトブースターを用いなくても同じようなことが出来るでしょうが、アニメーションによる連続的な画像加工を行う場合は、何枚も画像を用意しなければならず、手間も容量も増えてしまいます。
エフェクトブースターを用いれば(用意されている機能に限りますが)それらを節減することが可能です。
画像を加工するパラメータは、単独で機能するものと、ふたつ組み合わせて効果を発揮するものとがありますが、今回は単独で機能するパラメータを幾つか紹介します。
画像加工の基本
画像を加工するのは簡単で、そのために用意されたパラメータに値を設定するだけです。
サンプルとしては、基礎編(その一)で作成したものと同様、冒険者の宿の画像を用いることにします。
つまりベースは以下の画像で、これにさまざまな加工を加え、見比べていくことにします。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=400 8: height=260 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=0
画像を変色させる
まずはシンプルなものからはじめてみましょう。
colormap パラメータは画像の色調を変化させます。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=400 8: height=260 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=0 12: colormap=1
12 行目にパラメータが追加されました。これを実行するとこのような表示になります。
どことなく遺影っぽくなりましたが、これは colormap パラメータの効果によってグレイスケール化したことによるものです*1。
colormap パラメータは設定値を 1 以外の値にすることで、様々な色調で画像を表示することが出来ます。
設定値 | 色調 |
---|---|
0 | 通常色(デフォルト値) |
1 | グレイスケール |
2 | セピア |
3 | ピンク |
4 | サニィレッド |
5 | リーフグリーン |
6 | オーシャンブルー |
7 | ライトニング |
8 | パープルライト |
9 | アクアライト |
10 | クリムゾン |
11 | ダークグリーン |
12 | ダークブルー |
13 | スワンプ |
14 | ダークパープル |
15 | ダークスカイ |
たとえば colormap = 10 (クリムゾン)にすると・・・
こんな風に、色をつけることができるわけです。暗室っぽい雰囲気で・・・と言っても若い人には通じないかもしれませんが、状況によっては使い道がありそうです。
他の色については、実際にみなさん自身で試してみてください。
画像にフィルターを適用する
filter パラメータの使い方は colormap と似ていますが、画像に特殊な加工を施します。設定値によってさまざまな効果をもたらすことが可能で、 editor128.chm によれば、その効果は以下の通りです。
設定値 | 効果 |
---|---|
0 | フィルターなし(デフォルト値) |
1 | ぼかし |
2 | シャープ |
3 | サンパワー |
4 | カラーエンボス |
5 | ダークエンボス |
6 | エレクトリカル |
7 | モノクロ |
8 | 拡散 |
9 | ネガポジ反転 |
10 | エンボス |
それぞれの効果については実際に見るのが早いでしょう。以下に実行例を示します。
filter = 1(ぼかし)
filter = 2(シャープ)
filter = 3(サンパワー)
filter = 4(カラーエンボス)
filter = 5(ダークエンボス)
filter = 6(エレクトリカル)
filter = 7(モノクロ)
filter = 8(拡散)
filter = 9(ネガポジ反転)
filter = 10(エンボス)
ちなみに filter = 7 の「モノクロ」は(先ほどのグレースケールと異なり)二値化したものです。
ハッチングと網掛け
maskというパラメータは、画像に平行ないし格子状の線を加える効果があります。
設定値 | 効果 |
---|---|
0 | なし(デフォルト値) |
1 | 平行な縦線 |
2 | 平行な横線 |
3 | 縦横の格子状の網掛け |
たとえば mask = 2 を指定するとこうなります。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=400 8: height=260 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=0 12: mask=2
画像に横線が入りましたよね。この横線の色は(CardWirth における)透明色、つまり「画像の左上のドットの色」です。ということは transparent パラメータを有効にすると、その部分は透けて見えるようになる、ということです。
実際に 11 行目の transparent パラメータを 1 に変えるとこうなります。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=400 8: height=260 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=1 12: mask=2
背景の地図が透けましたね。
試しに、先に紹介した filter も組み合わせてみましょう。設定値は 8 (拡散)にします。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=400 8: height=260 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=1 12: mask=2 13: filter=8
反転と回転とバグ
エフェクトブースターには画像を反転したり回転したりして表示する機能があります。以下の三つです。
パラメータ | 概要 | 設定値 | デフォルト値 |
---|---|---|---|
flip | 画像を上下反転する | 0: 何もしない 1: 上下反転 | 0: 何もしない |
mirror | 画像を左右反転する | 0: 何もしない 1: 左右反転 | 0: 何もしない |
turn | 画像を九十度回転する | 0: 何もしない 1: 右(時計回り)に回転 2: 左(反時計回り)に回転*2 | 0: 何もしない |
使用するには、それぞれのパラメータを記述するだけです。たとえば冒険者の宿を上下反転するにはこうします。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=400 8: height=260 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=0 12: flip=1
12行目に flip パラメータを追加しました。これを表示すると以下のようになります。
上下が逆になって表示されました。
同様に、左右反転もやってみましょう。 flip の代わりに mirror を指定します。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=400 8: height=260 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=0 12: mirror=1
ちゃんと左右反転していますね。
これらのパラメータは同時に指定することも出来ます。つまり上下反転して左右反転すると、180 度回転したのと同じ結果になります。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=400 8: height=260 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=0 12: flip=1 13: mirror=1
次は 90 度の回転です。turn を用います。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=400 8: height=260 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=0 12: turn=1
その実行結果は・・・
いちおう回転はしているのですが、少し予想外の結果になりました。ちゃんと width と height を指定しているのですが、入れ替わって表示されてしまっています。検証のために width と height をそれぞれ 1/2 にしてみます。
1: [init] 2: backwidth=632 3: backheight=420 4: fileName=MapOfWirth.bmp 5: 6: [冒険者の宿] 7: width=200 8: height=130 9: fileName=AdventurersInn.bmp 10: position=116,15 11: transparent=0 12: turn=1
この実行結果はこの通りです。
やはり width と height が逆に解釈されているようです。CW 1.50 の turn パラメータの挙動にはバグがあるので注意が必要です。
ちなみに Py では以下のように表示されます。
画像としては(アスペクト比が変わってしまい)奇妙ですが、エフェクトブースターとしての動作はこちらの方が正しいといえます。
まとめとおさらい
今回のポイントは以下の通りです。
- 画像を加工するには、加工用のパラメータを追記するだけでよい
- 加工用のパラメータは、設定値によって幾つかの効果を持つものがある
- 異なる加工用のパラメータを組み合わせて使用することができる
今回登場したパラメータは以下の通りです。
パラメータ名 | 機能 |
---|---|
colormap | 画像の色調を変化させる |
filter | 画像に特殊な効果をもたらす |
mask | 画像に平行線や網掛けを付与する |
flip | 画像を上下反転させる |
mirror | 画像を左右反転させる |
turn | 画像を90度回転させる(CW1.50ではバグあり) |
次回は、二つのパラメータをセットで使用する画像加工について紹介します。
戻る:基礎編(その六) |
*1 普通の日本語ではこの種の画像を「モノクロ」とか「白黒」といいますが、コンピュータにおける画像の用語としては「厳密に白と黒の二種類しかない画像」と「白と黒とその中間の濃淡がある画像」を区分する傾向があり、「モノクロ」「白黒」はどちらとも取れるので、濃淡がないものを「二値画像(バイナリイメージ)」、あるものを「グレイスケール」と呼ぶことがあります
*2 editor128.chm には 1 が「左に回転」、2 が「右に回転」とありますが、誤りです
コメント
最新を表示する
NG表示方式
NGID一覧