Powershellでベース画像にα画像を合成(MIX)する方法です。
ありそうで無かったので。
Add-Type -AssemblyName System.Drawing
# 画像ファイルの読み込み
#ベースファイルの読み込み
$image = New-Object System.Drawing.Bitmap("base.png")
$gra = [System.Drawing.Graphics]::FromImage($image)
#MIXした画像の読み込み
$image2 = New-Object System.Drawing.Bitmap("mix.png")
#サムネイル用のキャンバス作成
#画像サイズをベースに合わせて拡縮
$image2s = New-Object System.Drawing.Bitmap([int]($image.Width), [int]($image.Height))
$gra2 = [System.Drawing.Graphics]::FromImage($image2s)
$gra2.DrawImage($image2, (New-Object System.Drawing.Rectangle(0 ,0, $image.Width,$image.Height)))
#開放
$gra2.Dispose()
$image2.Dispose()
$image2s.Dispose()
#MIX処理(ベースに上からDrawする)
#画像サイズを合わせたので、左上を合わせているが、必要に応じて場所は調整。
$gra.DrawImage($image2s, (New-Object System.Drawing.Rectangle(0 ,0, $image.Width, $image.Height)))
#セーブ
$image.Save($dst, [System.Drawing.Imaging.ImageFormat]::Png)
#開放
$gra.Dispose()
$image.Dispose()
MIXする画像はαありのPNGで、透過処理等が済んでいる前提です。
当方の環境では、MIXしたい画像はαありのPNGで流通しているため、それ前提になっています。
αが無い画像に関しては、MakeTransparent等の処理が別途必要になると思います。
P.S.
昔は、ImageMagickとか必要だったのに、今だと.netがあれば
Powershellでもここまでできるんだなと感心しました。
サードパーティライブラリ等をインストールしづらい環境では重宝しています。