【サンプル】ロゴの追加(2) のバックアップソース(No.2)

#contents

**概要 [#xd529bfb]

[[Layer]]フィルタを使って、ロゴ画像をクリップの上にを重ねます。また、[[Mask]]フィルタでロゴ画像にマスクを適用し、(背景色などの)ロゴの不要な部分が表示されないようにします。RGB32のみ対応。

マスクを使用しない、基本的なサンプルについては、[[【サンプル】ロゴの追加(1)]]を参照。[[【サンプル】ロゴの追加(1)]]には、ロゴの半透明化やエラーが出る場合の対処法についての説明もあります。

**スクリプト [#g7fdc6b2]

#code(nonumber){{
ConvertToRGB32() # ソースクリップをRGB32に変換。元々RGB32の場合は不要
logo = ImageSource("ロゴ画像のパス") # ロゴ画像の読み込み
logo = ConvertToRGB32(logo) # logoをRGB32に変換。元々RGB32の場合は不要
mask_clip = ImageSource("マスク画像のパス") # マスク画像の読み込み
mask_clip = ConvertToRGB32(mask_clip) # mask_clipをRGB32に変換。元々RGB32の場合は不要
logo = Mask(logo, mask_clip) # マスク生成
Layer(last, logo, "add", x=数値, y=数値) # x,yはロゴの座標
}}

**使用方法 [#fa09f23f]

+スクリプト内の「ロゴ画像のパス」を追加したいロゴ画像のパスに変更します。
+スクリプト内の「マスク画像のパス」を適用したいマスク画像のパスに変更します。
+ロゴの位置を決定するために、xとyの値を入力します。よくわからない場合は、とりあえず0に設定して、あとでプレビューしながら調整するといいでしょう。

**使用例 [#h6418b4d]

***ロゴ/マスク画像 [#uc02eb14]

#ref(logo_purple.png)

上の画像を、ソースクリップの上に追加します((添付されている画像はPNGフォーマットですが、実際に使用したのはBMPフォーマットの画像です。))。

#ref(mask_round.png)

こちらをマスク画像として使用します。[[Mask]]フィルタによって、グレースケールに変換され、ロゴ画像のアルファチャンネル((参考: [[IT用語辞典 e-Words : アルファチャンネルとは 【alpha channel】 ─ 意味・解説:http://e-words.jp/w/E382A2E383ABE38395E382A1E38381E383A3E383B3E3838DE383AB.html]]))のために使われます。

このマスク画像は、ロゴ画像の紫色の部分が黒、それ以外の部分が白になるように作成しました。

***コード [#g0b77c0b]

#code(nonumber){{
# ソースクリップ
ColorBars(320,240)
# ソースクリップがRGB32なので、RGB32への変換は行わない
#ConvertToRGB32() # ソースクリップをRGB32に変換。元々RGB32の場合は不要
# Cドライブ -> [My Pictures]フォルダにあるlogo_purple.bmpを開いて、変数logoに代入
logo = ImageSource("C:\My Pictures\logo_purple.bmp") # ロゴ画像の読み込み
# logoをRGB32に変換
logo = ConvertToRGB32(logo) # logoをRGB32に変換。元々RGB32の場合は不要
# Cドライブ -> [My Pictures]フォルダにあるmask_round.bmpを開いて、変数mask_clipに代入
mask_clip = ImageSource("C:\My Pictures\mask_round.bmp") # マスク画像の読み込み
# mask_clipをRGB32に変換
mask_clip = ConvertToRGB32(mask_clip) # mask_clipをRGB32に変換。元々RGB32の場合は不要
# mask_clipは白黒に変換され、logoのアルファチャンネルとして使われる
logo = Mask(logo, mask_clip) # マスク生成
# logoをソースクリップのx=200,y=212の位置に重ねる
Layer(last, logo, "add", x=265, y=185) # x,yはロゴの座標
# return文
return last
}}

***プレビュー画面 [#me9e32ad]

#ref(logo03_01_mask.png)

上記のスクリプトを実行したところ。

アルファチャンネルでは、黒[0,0,0]は完全に透明、白[255,255,255]は完全に不透明を意味します。

このため、マスク画像の黒にあたる部分は背景(ソースクリップ)が透けて見えている(ロゴ画像の紫色の部分は表示されていない)のに対し、マスク画像の白の部分は背景を透さずに、ロゴ画像がそのまま表示されています。

#ref(mask_gradation.png)

試しに、こちらの画像を、マスクとして使用してみました。

#ref(logo03_03_gradation_mask.png)

黒の濃さに応じて、段階的にロゴ画像の透明度が変化しているのがわかります。

**備考 [#m6d0ea04]

スクリプトエラーが出るなど、うまく行かない場合は、[[【サンプル】ロゴの追加(1)]]の[[トラブルシューティング>【サンプル】ロゴの追加(1)#y2264fe3]]を参照。