見出し画像

大量の大容量画像をimagemagickでの圧縮をpowershellで書いてみました


はじめに

顧客である外車専門の自動車屋のサイトのcarフォルダには、2010年から14年分の大量の画像が蓄積されています。
去年末頃から車を高精細カメラで撮影するようになり、従来100kb~300kb程度だった写真サイズが2MB~5MB程度になり、弊害が現れてきました。
弊害除去のため、画像をまとめて圧縮するpowershellスクリプトを書いたので紹介します。
注:弊害については本記事の主題からずれるので省略します。

画像フォルダの内容

画像フォルダはcarフォルダ下に車種ごとのフォルダがあり、その下に1台毎の画像フォルダがあります。
このサンプルでは
 C:\carimgフォルダ下にcarフォルダを作成し、コピーを取っておきます。
 C:\carimgフォルダ下にPowerShellのスクリプトも入れます。

フォルダの構成

写真は車種フォルダ下に各車の写真が20枚ほど入っています。

写真の格納場所

PowerShellとは?

PowerShellとはコマンドプロンプトの拡張版です。
コマンドプロンプトとはWindows以前からある、コマンドという文字列を入力してコンピュータに命令する方法です。
マウスを使わないので分かりにくく、使う人は多くはありません。
主に、開発者のためのパソコン操作手段になっています。

画像を処理する場合、一般にはネット上でアプリを探します。
今回のように、大量に一括で処理するアプリはなかなか見つかりません。
あっても非常に高価です。
普通に見つかるのは、1つのフォルダ内の画像を一括処理するサイトです。
大量のフォルダを処理する場合は、延々と手作業を行うことになります。
多くの場合、ある程度処理したところで「扱うファイル数がxx個を超えたので以降の操作は有料です」というメッセージに遭遇します。

開発者は次のように考えます。
1.多くのディレクトリから1MBを超える画像ファイルを探すスクリプト(コマンドラインで書くプログラム)を探す、もしなければ自分で書く。
2.画像ファイルを縮小するアプリを呼び出す。
本記事は1.のスクリプトの書き方の紹介です。

画像処理ソフト

画像の縮小は次の理由でImageMagickというアプリで行うことにしました。
・無料で利用できる。
・コマンドラインで利用できる。
・画像品質とサイズを指定して画像を縮小できる。
下記よりインストールしておくと、コマンドラインから利用可能です。

多くのディレクトリを探すスクリプトの書き方

従来はネットでサンプルを探して目的に近いスクリプトを自分用に書き改めます。
例えば、以下のサイトを見つけたら、スクリプトが目的と合っているかどうか確認します。

しかし、今年は生成AI の進化が著しく、実用になってきました。
ここではCopilotを使って画像を探すスクリプトを書いてもらいました。

生成されたスクリプト

動作確認します。
うまく動いているようです。

表示の実行結果

最後の行に画像圧縮コマンドに差し替えます。

Get-ChildItem -Path  "c:\car" -Recurse -File -Include *.jpg,*.png `
| Where-Object { $_.Length -ge 1MB } `
| ForEach-Object { `
    Write-Host "ファイル名: $($_.Name), サイズ: $($_.Length) bytes"; `
    magick $_.FullName -resize 2048x1536 -strip -quality 70 $_.FullName `
}

実行してみます。

表示と圧縮の実行結果

まとめ

生成AIでPowerShellのスクリプトの作成が簡単にできるようになり、そのままでも動きました。
生成AIをこのような場合に使えば、難しいPowerShellを簡単に使いこなせる状況になったという事です。
PowerShellのスクリプトで簡単なアプリを組み合わせて実行すれば、複雑で高価なアプリと同じことができてしまいます。
そのスクリプトを生成AIが簡単に書いてくれます。
何度も手直しして、高品質で自分に合ったものにしてゆけます。
これで高価なアプリを購入する必要がなくなりました。


【マガジン】BITCOIN
【マガジン】IT技術
AIは年寄りに若者の気持ちを教えるツールになれる?
去年前半の生成AIは嘘つきだった、去年後半の生成AIはバカだった、今年の生成AIにあなたは何を期待しますか?
トップの座を脅かすとこのような試練が訪れる(前編)
Blazor.BrowserExtension.Templateでブラウザ拡張機能を作る
PhotoSwiper V5を使っておしゃれな写真集ウェブページを簡単に作成する
大量の大容量画像のimagemagickでの圧縮をpowershellで書きました
大量の大容量画像のimagemagickでの圧縮をPythonでも書きました

よろしければサポートお願いします! いただいたサポートは全て『「思い出の場所」の記事とGoogle地図を関連付けるWeb地図アプリ』のLancersでのプログラミングの外注に使わせていただきます。 よろしくお願いします。