PowerShellで画像を左右に分割するスクリプト

コンピュータ

横長の画像ファイルを真ん中で分割し2つの画像ファイルを作ります。

<#
.SYNOPSIS
画像を分割

.EXAMPLE
.\SplitImage.ps1 .\aaa.png

.PARAMETER ImgPath
画像ファイル

.PARAMETER Help
ヘルプスイッチ

.LINK
関連URL

#>
using namespace System.Drawing
using namespace System.IO

param(
    [string]
    $ImgPath = "E:\Real-CUGAN\out\023.png",
    [switch]
    $Help
)

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

$fs = [FileStream]::new($ImgPath, [FileMode]::Open, [FileAccess]::Read)
$bmp = [Bitmap]::FromStream($fs)
$fs.Close()

$w = $bmp.Width / 2
$h = $bmp.Height

$outBmp1 = [Bitmap]::new($w, $h)
$outBmp2 = [Bitmap]::new($w, $h)

$rect = [Rectangle]::new(0, 0, $w, $h)

$g = [Graphics]::FromImage($outBmp1)
$g.DrawImage($bmp, $rect, 0, 0, $w, $h, 2)
$g.Dispose()

$g = [Graphics]::FromImage($outBmp2)
$g.DrawImage($bmp, $rect, $w, 0, $w, $h, 2)
$g.Dispose()

$outDir = Split-Path $ImgPath -Parent
$outFile = Split-Path $ImgPath -Leaf
$outBase = [Path]::GetFileNameWithoutExtension($outFile)
$outExt = [Path]::GetExtension($outFile)

$outPath = Join-Path $outDir ($outBase + "-1" + $outExt)
Write-Host $outPath
$outBmp1.Save($outPath, $bmp.RawFormat.Guid)

$outPath = Join-Path $outDir ($outBase + "-2" + $outExt)
Write-Host $outPath
$outBmp2.Save($outPath, $bmp.RawFormat.Guid)

コメント