LoginSignup
4
4

More than 5 years have passed since last update.

Powershellでα画像を合成する方法

Last updated at Posted at 2016-11-03

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でもここまでできるんだなと感心しました。
サードパーティライブラリ等をインストールしづらい環境では重宝しています。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4