Powershellで画像ファイルを拡大縮小するスクリプト

コンピュータ
PowerShellのあれこれ

画像を拡大縮小するスクリプトです。

<#
.SYNOPSIS
 画像ファイルを拡大(縮小)する

.EXAMPLE
 Enlage-Picture -SroucePath "元画像のパス" -DestinationPath "先画像のパス" -Times 倍率

#>

using namespace System.Drawing

param(
    [string]$SourcePath,
    [string]$DestinationPath,
    [int]$Times = 1
)

Set-StrictMode -Version Latest
$ErrorActionPreference = "STOP"

function Enlage-Picture
{
    param(
        [string]$src_path,
        [string]$dst_path,
        [int]$t
    )


    # 元のビットマップ
    $SrcBmp = [Bitmap]::FromFile($src_path)

    # 幅と高さを計算
    $width = [int]($SrcBmp.Width * $t)
    $height = [int]($SrcBmp.Height * $t)

    # 先のビットマップ
    $DstBmp = [Bitmap]::new($width, $height)

    # グラフィックオブジェクト
    $canva = [Graphics]::FromImage($DstBmp)

    # 補完方法をニアレストネイバー法でセットする
    #$canva.InterpolationMode  = [Drawing2D.InterpolationMode]::NearestNeighbor 

    # 補完方法をバイキュービック法でセットする
    #$canva.InterpolationMode  = [Drawing2D.InterpolationMode]::HighQualityBicubic

    # 補完方法をバイリニア法でセットする
    #$canva.InterpolationMode  = [Drawing2D.InterpolationMode]::HighQualityBilinear

    #Write-Host ("補完方法:{0}" -f $canva.InterpolationMode)

    # 描画
    $canva.DrawImage($SrcBmp, 0, 0, $width, $height)

    # 画像を保存
    $DstBmp.Save($dst_path, $SrcBmp.RawFormat.Guid)


    # 解放
    $canva.Dispose()
    $DstBmp.Dispose()
    $SrcBmp.Dispose()

}

if (-not($MyInvocation.PSCommandPath))
{
    Enlage-Picture -src_path $SourcePath -dst_path $DestinationPath -t $Times
}

GraphicsオブジェクトのInterpolationModeに補完方法をセット出来ますが、デフォルトはBilinearがセットされていました。

コメント