2023年4月19日水曜日

Powershellで指定フォルダ配下の.png画像ファイルを.jpgに一括変換する

はじめに

PNGファイルをJPEGに変換する方法にはいくつかの方法がありますが、Windowsのデフォルト機能だけで実現したい場合は、PowerShellを使用することができます。本記事では、PowerShellを使用して指定ディレクトリ配下のPNGファイルをJPEGに変換する方法について解説します。

スクリプト

# Set the source and destination folders
$sourceFolder = "C:\tmp"
$destinationFolder = "C:\tmp\jpg"

# Get all PNG files in the source folder
Get-ChildItem -Path $sourceFolder -Filter *.png -Recurse | ForEach-Object {

    # Set the output file name and path
    $outputFilePath = Join-Path $destinationFolder ($_.BaseName + ".jpg")

    # Convert the PNG file to JPEG with maximum quality
    Add-Type -AssemblyName System.Drawing
    $pngImage = [System.Drawing.Image]::FromFile($_.FullName)
    $encoder = [System.Drawing.Imaging.Encoder]::Quality
    $encoderParameters = New-Object System.Drawing.Imaging.EncoderParameters(1)
    $encoderParameter = New-Object System.Drawing.Imaging.EncoderParameter($encoder, [int]100)
    $encoderParameters.SetParameter(0, $encoderParameter)
    $pngImage.Save($outputFilePath, [System.Drawing.Imaging.ImageCodecInfo]::GetEncoder([System.Drawing.Imaging.ImageFormat]::Jpeg), $encoderParameters)

}

内容解説

①まず、変換元となるPNGファイルがあるディレクトリのパスを指定します。以下の例では、C:\tmpを変換元のディレクトリとしています。

$sourceFolder = "C:\tmp"

②次に、変換後のJPEGファイルを保存するディレクトリのパスを指定します。以下の例では、C:\tmp\jpgを変換後のディレクトリとしています。

$destinationFolder = "C:\JPEG"

③その後、Get-ChildItemコマンドレットを使用して、変換元のディレクトリ配下にあるPNGファイルの一覧を取得します。-Recurseオプションを指定することで、サブディレクトリ内のPNGファイルも含めて取得します。ForEach-Objectコマンドレットを使用して、PNGファイルごとに変換処理を実行します。

エンコーダーパラメーターの設定は、ここでは、品質を最高に設定しています。

ポイント

今回のスクリプトのポイントとしては、以下の部分です。

1.画像のフォーマットを変換するには、.NET Frameworkに含まれる「System.Drawing」名前空間を使用することができます。

2.変換対象のフォルダ内に存在する画像ファイルを検索するには、「Get-ChildItem」コマンドレットを使用します。

3.検索した画像ファイルを一つずつ変換するために、「ForEach-Object」コマンドレットを使用します。

4.画像ファイルを変換するには、「System.Drawing.Image」オブジェクトを作成して、「.Save」メソッドを使用します。変換後のファイル形式として「System.Drawing.Imaging.ImageFormat.Jpeg」を指定し、品質として「100」を指定しています。

0 件のコメント:

ウェブサイトのURLにおけるトレイリングスラッシュの解釈と有無による動作の違い

インターネットが現代社会におけるコミュニケーションの基盤となっている今日、ウェブサイトのURLはビジネスや個人ブランディングにとって重要な役割を果たしています。URLは単にウェブページへの経路を示すだけでなく、SEO(検索エンジン最適化)においても重要な要素です。この記事では、U...