.NetのImageオブジェクトをファイルから生成してPNG形式で保存します。
使い方はスクリプトの.EXAMPLEを見てください。
<#
.SYNOPSIS
JpegファイルをPngファイルへ変換
.DESCRIPTION
JpegファイルをPngファイルへ変換
.EXAMPLE
Convert-Jpeg2Png.ps1 -Path Jpegファイル -Outdir = "./Output"
.PARAMETER $Path
Jpegファイルのパス
.EXAMPLE
Convert-Jpeg2Png.ps1 -Path "F:\Pictures\00000-2181776672.jpg"
.EXAMPLE
Get-ChildItem "F:\Pictures" -Filter "*.jpg" | Convert-Jpeg2Png.ps1
#>
param(
[string]
$Path,
[string]
$Outdir = "./Output",
[switch]
$Help
)
if ($Help) {
Get-Help $MyInvocation.MyCommand.Path
Exit 1
}
Add-Type -AssemblyName System.Drawing
function Convert-Jpeg2Png
{
[CmdletBinding()]
param (
[Parameter(ValueFromPipeline=$true,Mandatory=$true)]
[string[]]
$path,
[Parameter(ValueFromPipeline=$false,Mandatory=$true)]
[string]
$odir
)
begin {}
process
{
foreach ($p in $path)
{
$path = Convert-Path $path
$odir = Convert-Path $odir
$fileStr = Split-Path $path -Leaf
$baseName = [System.IO.Path]::GetFileNameWithoutExtension($fileStr)
$outFile = (Join-Path $odir ($baseName+".png"))
$bmp = [System.Drawing.Image]::FromFile($path)
Write-Output $outFile
$bmp.Save($outFile, [System.Drawing.Imaging.ImageFormat]::Png)
$bmp.Dispose(); $bmp = $null
}
}
end {}
}
$args = @($input)
if ($Help -Or ( -Not $Path -And $args.Count -eq 0))
{
Get-Help $PSCommandPath
Exit 1
}
if (-not (Test-Path $Outdir))
{
New-Item $Outdir -ItemType Directory | Out-Null
}
if ($args.Count -gt 0)
{
if ($args[0] -is [System.IO.FileSystemInfo])
{
$args | ForEach-Object { $_.FullName } | Convert-Jpeg2Png -odir $Outdir
}
else
{
$args | Convert-Jpeg2Png -odir $Outdir
}
}
else
{
Convert-Jpeg2Png -path $Path -odir $Outdir
}
コメント