2018年7月29日

【PowerShell】画像に透かしを入れるスクリプト


こういうブログとかに画像を掲載していると、その画像を盗用される心配があります。

簡単に出来る対策として、画像に著作権表示を入れるというものがあります。

そこで今回は、画像に透かしを入れるスクリプトを試しに作ってみました。
#Create-Watermark

Add-Type -AssemblyName System.Drawing

#画像ファイルを読み込んでImageオブジェクトを作成する
$img = New-Object System.Drawing.Bitmap("C:\work\watermark\before.jpg")

#ImageオブジェクトのGraphicsオブジェクトを作成する
$g = [System.Drawing.Graphics]::FromImage($img)

#文字列を右下に描画する
$fnt = New-Object System.Drawing.Font("メイリオ", 10)
$width = $img.Width
$height = $img.Height
$g.DrawString("©ほそぼそプログラミング日記", $fnt, [System.Drawing.Brushes]::Black, $width - 400, $height - 50)
$fnt.Dispose();

#作成した画像を保存
$img.Save("C:\work\watermark\after.jpg")

#リソースを解放
$g.Dispose()
$img.Dispose()


実行結果

元の画像




透かしを入れた画像


ほんとに単純に文字列を追加しただけで、文字自体も半透明とかにはなってないのですが、画像処理ソフトなどを使わずに著作権表示を簡単に入れられるのはなかなか便利なのではないかと思います。

あと、文字を入れる位置は実際に試してみて調整を加えて上記のような設定にしています。元の画像の大きさによって位置が結構違ってくるので、もしかしたらもっと違う指定の仕方があるのかもしれません。そこはまた今後の課題ということで分かったらまたお伝えしたいと思います。


<参考サイト>
プログラムで画像を動的に作成する | dobon.net


<関連記事>
【PowerShell】画像に半透明の透かし文字を入れるスクリプト