ImageMagickのコマンドを使ってJPEG画像を一括で圧縮する方法

スポンサーリンク

ImageMagickを使おうと思った経緯

PNG画像の圧縮はpngquantを使っていたのですが、JPEGの画像は圧縮できないので他のソフトを探していました。(正確には圧縮できるのですがJPEGに対応しているかが不明)

Squooshも検討していてこちらはCLIのツールがあって導入してみたのですが、エラーが出て動きませんでした。頑張れば原因を特定できるのかもしれませんが、そこに労力をそいでも仕方がないので今回は見送り。あと、Squoosh CLIは現時点(2023/08)では開発が終了しているそうです。以下の記事に書いてありました。↓
@squoosh/cli – npm

jpegoptimというのもあったんですがこちらは基本的にはLinuxで使用するものでWindowsに導入するには敷居が高そうだったのでこれも見送り。
GitHub – tjko/jpegoptim: jpegoptim – utility to optimize/compress JPEG files

次にオンライン画像圧縮サービスの「TinyPNG」というサイトがあるのですがこちらはJPEGにも対応しているんですが、画像をアップロードしないといけないのでやたら時間がかかるんですよね。しかもいちいちサイトにアクセスする手間もあります。

そんなこんなでImageMagickにたどりつきました。こちらはインストーラーで簡単にWindowsにインストールできて様々な画像形式にも対応、コマンドラインも使えるソフトです。今回はJPEGの圧縮に使用する予定ですが、圧縮以外にもさまざまな事ができるようです。(というかかなり機能が多い模様)

スポンサーリンク

ImageMagickとは

ImageMagickは、画像の作成、編集、変換、表示などのさまざまな画像処理タスクを実行するためのオープンソースのソフトウェアスイートです。ImageMagickは、コマンドラインツールとして利用可能であり、プログラムやスクリプトからも利用できるため、画像処理の自動化やバッチ処理に向いています。

ImageMagickは、様々な画像形式(JPEG、PNG、GIF、TIFFなど)をサポートしており、画像のサイズ変更、切り抜き、回転、反転、色の変更、フィルタリング、合成などの操作を行うことができます。また、テキストや図形の追加、透明度の設定、アニメーションの作成などもサポートしています。

ChatGPT

ImageMagickの公式サイト
https://imagemagick.org/index.php

ダウンロードはこちらから↓
https://imagemagick.org/script/download.php

ImageMagickのコマンドラインはここでみることができます↓
https://imagemagick.org/script/command-line-tools.php

ImageMagickのインストール

ImageMagickのインストールはインストーラーの指示にしたがってインストールだけなので手順は省略します。しかしオプションでffmpegをインストールするかどうかのチェック項目があったので、それだけ外してインストールしました。

あとはインストール時にパスを通すかどうかのチェックもあるのでこれにチェックを入れておきます。そうしないとImageMagickのコマンドである「magick」が使えませんのでパスは通しておきましょう。(あとから自分でパスを通すこともできますが)

ImageMagickでJPEG画像を圧縮

最近のスマホで写真を撮ると画像が1MBを超えてしまうのでブログに使うとページが重くなります。ですのでささっと圧縮したいので今回はImageMagickのコマンドで指定フォルダにあるJPEG画像を一括で圧縮させます。

再利用するので今回はバッチファイルを作成しました。以下がコードです。

set source_dir=C:\Users\exsampleuser\blog
set quality=85

for %%a in (%source_dir%\*.jpg) do (
    magick %%a -strip -quality %quality% %%a
)

source_dirは適宜書き換えて利用してください。qualityは圧縮画像の品質です。初期値がわからなかったのですが85でも元の画像の半分くらい容量を削減できていました。

-stripオプションは画像から全てのプロファイルやメタデータを削除します。

このコードは元の画像を圧縮画像で上書きします。

ちなみにこの他にもいろいろオプションがあるので気になる人は公式のドキュメントを参照してください。

ImageMagickでPNG画像を圧縮

ImageMagickはJPEG画像だけでなくPNG画像も圧縮できます。

set source_dir=C:\Users\exsampleuser\blog
set quality=85

for %%a in (%source_dir%\*.png) do (
    magick %%a -strip -quality %quality% %%a
)

JPEG画像を圧縮するコードの拡張子を変えただけです。

ImageMagicでもPNG画像を圧縮できますが、「pngquant」のほうがファイル容量を削減できます。

バッチファイルは何回も使うのでショートカット作成

圧縮のバッチファイルは何回もつかうのでショートカットなどを作成しておくとよいと思います。プログラマーならさらに自動化することも可能かと思います。

私の場合はとりあえずランチャーソフトを使用しているのでそこにバッチファイルを登録しています。頑張れば自動化できますが、とりあえず今はいいかなということで自動化は見送りました。

まとめ

ImageMagickはWindowsにもインストールできてコマンドラインで画像を圧縮することができます。JPEGにもPNGにも対応しているので圧縮はImageMagickに一本化してもよいかもしれませんがPNG画像に関しては「pngquant」を使ったほうが容量を削減できます。あと今回は圧縮しか触れませんでしたが、ImageMagickは「多機能すぎる」とよく言われるほどで圧縮以外にもさまざまな機能があるので気になる人は公式のドキュメントを読んでみましょう。

コメント

タイトルとURLをコピーしました