画像を拡大縮小するスクリプトです。
<#
.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
がセットされていました。
コメント