サンプルスクリプト/ロゴの追加(2)
概要 †
Layerフィルタを使って、ロゴ画像をクリップの上に重ねます。また、Maskフィルタでロゴ画像にマスクを適用し、(背景色などの)ロゴの不要な部分が表示されないようにします。
MaskフィルタはRGB32にのみ対応しているため、ソースクリップがRGB32でない場合は、ConvertToRGB32フィルタを使って変換するようになっています。
スクリプト †
IsRGB32() ? last : 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=数値, level=255) # x,yはロゴの座標
使用方法 †
- スクリプト内の「ロゴ画像のパス」を追加したいロゴ画像のパスに変更します。
- スクリプト内の「マスク画像のパス」を適用したいマスク画像のパスに変更します。
- ロゴの位置を決定するために、xとyの値を入力します。よくわからない場合は、とりあえず0に設定して、あとでプレビューしながら調整するといいでしょう。
- levelの値を調節することで、ロゴを半透明化することができます(サンプルスクリプト/ロゴの追加(1)を参照)。
使用例 †
ロゴ/マスク画像 †
上の画像を、ソースクリップの上に追加します*1。
こちらをマスク画像として使用します。Maskフィルタによって、グレースケールに変換され、ロゴ画像のアルファチャンネル*2のために使われます。
このマスク画像は、ロゴ画像の紫色の部分が黒、それ以外の部分が白になるように作成しました。
スクリプト例 †
ColorBars(320,240) # ソースクリップ #//--- ここからサンプルスクリプト ---// IsRGB32() ? last : ConvertToRGB32() # ソースクリップがRGB32では"ない"場合は、RGB32に変換 logo = ImageSource("C:\My Pictures\logo_purple.bmp") # ロゴ画像の読み込み logo = ConvertToRGB32(logo) # logoをRGB32に変換。元々RGB32の場合は不要 mask_clip = ImageSource("C:\My Pictures\mask_round.bmp") # マスク画像の読み込み mask_clip = ConvertToRGB32(mask_clip) # mask_clipをRGB32に変換。元々RGB32の場合は不要 logo = Mask(logo, mask_clip) # マスク生成 Layer(last, logo, "add", x=265, y=185, level=255) # x,yはロゴの座標 #//--- ここまでサンプルスクリプト ---// return last
ロゴ画像のパス、マスク画像のパスとx, yの値のみ変更しています。
プレビュー画面 †
上記のスクリプトを実行したところ。
アルファチャンネルでは、黒[0,0,0]は完全に透明、白[255,255,255]は完全に不透明を意味します。
このため、マスク画像の黒にあたる部分は背景(ソースクリップ)が透けて見えている(ロゴ画像の紫色の部分は表示されていない)のに対し、マスク画像の白の部分は背景を透さずに、ロゴ画像がそのまま表示されています。
試しに、こちらの画像を、マスクとして使用してみました。
黒の濃さに応じて、段階的にロゴ画像の透明度が変化しているのがわかります。
今回、使用したフィルタ †
- Layer
- Mask
- ImageSource
- ConvertToRGB32
関連ページ †
*1 添付されている画像はPNGフォーマットですが、実際に使用したのはBMPフォーマットの画像です。
*2 参考: IT用語辞典 e-Words : アルファチャンネルとは 【alpha channel】 ─ 意味・解説