PowerShellを使って画像ファイルをトリミングする方法

仕事のこと

先日「大量に取得した作業中のスクリーンショットから一部分だけをトリミングしてマニュアルを作成する」というお仕事があり、一枚ずつペイントソフトでトリミングしてました。
でも、あまりにもファイル数が多く しかも同じ座標ばかり続くので自動化できないかといろいろ調べてみたら、PowerShellでトリミングできることを知りました。
別の仕事でも使えそうなので、自分の備忘録として書いておきます。
あなたの役に立てば幸いです。

画像ファイルをトリミングするスクリプト

以下の例では、元画像(C:\temp\before.png)の画像左上からの座標(256,150)から横640px×縦480pxを切り抜いて、新しい画像(C:\temp\after.png)として書き出します。

実際にはループ処理などを使ってフォルダ内のすべてのファイルに対して加工処理を施すようにして自動化することになります。

# .NET Frameworkのアセンブリをロード
Add-Type -AssemblyName System.Drawing

# 元画像読み込み
$SrcBmp = New-Object System.Drawing.Bitmap("C:\temp\before.png")

# トリミング
$Rect = New-Object System.Drawing.Rectangle(256, 150, 640, 480);
$DstBmp = $SrcBmp.Clone($Rect, $SrcBmp.PixelFormat)

# トリミング画像保存
$DstBmp.Save("C:\temp\after.png", [System.Drawing.Imaging.ImageFormat]::Png)

# オブジェクト破棄
$SrcBmp.Dispose()
$DstBmp.Dispose()

まとめ

今回はトリミングですが、調べていたら他にもいろいろとPowerShellを使って画像の加工ができるようなので、また使えるネタがあれば紹介したいと思います。

タイトルとURLをコピーしました