ファイル名:Change-DPI.ps1
<#
.SYNOPSIS
画像ファイルのDPIを一括変更するスクリプト
.PARAMETER InDir
画像ファイルが格納されたディレクトリ
.PARAMETER Filter
ファイル名の絞り込みフィルタ(例.*.png)
.PARAMETER DPI
設定するDPI
.PARAMETER OutDir
画像の主力先ディレクトリ
#>
using namespace System.Drawing
param(
[string]$InDir = "",
[string]$Filter="*.*",
[float]$DPI = 144.0,
[string]$OutDir="."
)
if (($InDir.Length -eq 0) -or (-not (Test-Path -LiteralPath $InDir))) {
Exit
}
ls -LiteralPath $InDir -Filter $Filter | % {
$bmp = [Bitmap]::FromFile($_.FullName)
$newBmp = [Bitmap]::new($bmp.Width, $bmp.Height)
$newBmp.SetResolution($DPI, $DPI)
$g = [Graphics]::FromImage($newBmp)
$g.DrawImage($bmp, 0, 0, $bmp.Width, $bmp.Height);
$g.Dispose()
if (($OutDir -eq ".") -or ($OutDir.Length -eq 0)) {
$OutDir = (Get-location).Path
}
$outPath = (Join-Path $OutDir $_.Name)
$newBmp.Save($outPath, $bmp.RawFormat.Guid)
$bmp.Dispose()
$newBmp.Dispose()
$outPath
}
コメント