前回、『画像に透かしを入れるスクリプト』という記事で画像に文字を入れるスクリプトを紹介しましたが、あれでは本当の意味での透かしになっていませんでした。
やはり、透かしと言うぐらいなので文字が透けてなければいけません。
そこでいろいろ調べ結果、文字を半透明にして入れる方法が分かりましたので今回は画像に半透明の透かし文字を入れるスクリプトです。
#Create-Watermark2
#画像ファイルを読み込んでImageオブジェクトを作成する
$img = New-Object System.Drawing.Bitmap("C:\work\watermark\before2.jpg")
#ImageオブジェクトのGraphicsオブジェクトを作成する
$g = [System.Drawing.Graphics]::FromImage($img)
#半透明のブラシを作成する
$b = New-Object System.Drawing.SolidBrush([System.Drawing.Color]::FromArgb(96, [System.Drawing.Color]::Black))
$fnt = New-Object System.Drawing.Font("メイリオ", 16)
#文字列を右下に描画する
$g.DrawString("©ほそぼそプログラミング日記", $fnt, $b, 180, 530)
$fnt.Dispose()
$b.Dispose()
#作成した画像を保存する
$img.Save("C:\work\watermark\after2.jpg")
#リソースを解放する
$g.Dispose()
$img.Dispose()
少し解説すると、Color.FromArgb メソッドにアルファ値(1~254)を指定すると文字を半透明にすることが出来ます。今回は、色を「黒」にしてアルファ値を「96」にしています。
実行結果

ビフォア
↓

アフター
おわかりいただけただろうか笑
文字色を黒にしているのですが、半透明にしていることによって薄っすらと文字が入っています。
<参考サイト>
半透明の線や文字を描画する | dobon.net
Graphics.DrawString メソッド (String, Font, Brush, Single, Single) | MSDN
Color.FromArgb メソッド (Int32, Color) | MSDN
SolidBrush クラス | MSDN
<関連記事>
【PowerShell】画像に透かしを入れるスクリプト
キュレーションサイトに勝手に画像を直リンされたので削除してやったよ。
スポンサーリンク