UNIX系OS ( Mac / Linux / FreeBSD )のシェルコマンドに関する各種メモ書き

MacのコマンドラインでPNG画像を圧縮する方法8選

● MacのコマンドラインでPNG画像を圧縮する方法8選


1. pngquant(有損圧縮)

  • 概要pngquantは、PNG画像を8ビットのパレット形式に変換することで、ファイルサイズを大幅に削減する有損圧縮ツールです。
  • 圧縮原理:画像の色数を減らす「カラー量子化(color quantization)」を行い、24/32ビットカラーから256色以下の8ビットカラーに変換します。これにより、ファイルサイズが最大70%削減されることがあります。アルファチャンネル(透明度)も保持されます。
  • インストールと使用例
// install
brew install pngquant

// 圧縮の実行
pngquant --quality=70 --output output.png input.png

このコマンドは、品質を60〜80の範囲に設定して画像を圧縮します。品質の範囲を指定することで、圧縮後の画質を調整できます。品質の数値が高いほど画質が良くなりますが、ファイルサイズも大きくなります。逆に、数値が低いほど画質は劣化しますが、ファイルサイズは小さくなります。適切な品質の範囲を選択することで、画質とファイルサイズのバランスを取ることができます。 (GitHub, Ubunlog)


2. OptiPNG(無損圧縮)

  • 概要OptiPNGは、PNG画像を再圧縮してファイルサイズを削減する無損圧縮ツールです。
  • 圧縮原理:PNG画像の圧縮は、まず「フィルタリング」と呼ばれる前処理を行い、その後、Deflateアルゴリズムを使用して圧縮されます。OptiPNGは、さまざまなフィルタリング方法と圧縮レベルの組み合わせを試行し、最も効率的な組み合わせを選択して再圧縮を行います。これにより、画像の品質を損なうことなくファイルサイズを削減できます。
  • 使用例

    optipng -o7 input.png
    

このコマンドは、最も高い最適化レベル(-o7)で画像を圧縮します。最適化レベルを上げると、圧縮率が向上しますが、処理時間も長くなります。適切な最適化レベルを選択することで、圧縮率と処理時間のバランスを取ることができます。OptiPNGは、画像の品質を保持しながらファイルサイズを削減したい場合に適しています。特に、ウェブサイトのパフォーマンス向上やストレージの節約に有効です。(Linux Command Library)


3. pngcrush(無損圧縮)

  • 概要pngcrushは、PNG画像のフィルタリング方法や圧縮パラメータを変更して再圧縮を行う無損圧縮ツールです。
  • 圧縮原理:PNG画像のデータは、フィルタリングとDeflate圧縮を組み合わせて圧縮されています。pngcrushは、異なるフィルタリング方法や圧縮パラメータの組み合わせを試行し、最も効率的な組み合わせを選択して再圧縮を行います。また、不要なメタデータ(チャンク)を削除することで、さらにファイルサイズを削減できます。
  • 使用例

    pngcrush -brute input.png output.png
    

このコマンドは、-bruteオプションを使用して、すべてのフィルタリング方法と圧縮パラメータの組み合わせを試行し、最も効率的なものを選択して再圧縮を行います。処理時間は長くなりますが、最大限の圧縮効果が得られます。pngcrushは、画像の品質を保持しながらファイルサイズを削減したい場合に適しています。特に、ウェブサイトのパフォーマンス向上やストレージの節約に有効です。(Ubuntu Manpages)


4. ZopfliPNG(高圧縮・無損圧縮)

  • 概要ZopfliPNGは、Googleが開発したZopfli圧縮アルゴリズムを使用してPNG画像を再圧縮する無損圧縮ツールです。
  • 圧縮原理:Zopfliは、Deflate互換の圧縮アルゴリズムであり、既存のDeflate圧縮よりも高い圧縮率を実現します。ZopfliPNGは、PNG画像のデータをZopfliアルゴリズムで再圧縮することで、ファイルサイズをさらに削減します。ただし、圧縮処理には時間がかかるため

続きとして、MacのCLIで利用可能なPNG圧縮ツールとその圧縮原理について、さらに詳しくご紹介します。


4. ZopfliPNG(高圧縮・無損圧縮)

  • 概要ZopfliPNGは、Googleが開発したZopfli圧縮アルゴリズムを使用してPNG画像を再圧縮する無損圧縮ツールです。
  • 圧縮原理:Zopfliは、Deflate互換の圧縮アルゴリズムであり、既存のDeflate圧縮よりも高い圧縮率を実現します。ZopfliPNGは、PNG画像のデータをZopfliアルゴリズムで再圧縮することで、ファイルサイズをさらに削減します。ただし、圧縮処理には時間がかかるため、バッチ処理や最終成果物の最適化に適しています。
  • 使用例

    zopflipng --iterations=15 --filters=01234 input.png output.png
    

このコマンドは、15回の繰り返しとすべてのフィルタを試して最適な圧縮を行います。(ariya.io)


5. PNGOUT(高圧縮・無損圧縮)

  • 概要PNGOUTは、Ken Silverman氏が開発した高圧縮率の無損圧縮ツールです。
  • 圧縮原理PNGOUTは、PNG画像のフィルタリング方法や圧縮パラメータを最適化し、Deflate圧縮を効率的に行います。これにより、他のツールよりも高い圧縮率を実現することがあります。
  • 使用例

    pngout input.png output.png
    

このコマンドは、デフォルト設定で画像を圧縮します。詳細なオプションを指定することで、さらに圧縮効果を高めることができます。(ウィキペディア)


6. ImageOptim CLI(統合型・無損/有損圧縮)

  • 概要ImageOptim-CLIは、ImageOptimアプリケーションのコマンドラインインターフェースであり、複数の圧縮ツールを統合して画像の最適化を行います。
  • 圧縮原理ImageOptim-CLIは、pngquantOptiPNGpngcrushZopfliPNGなどのツールを組み合わせて使用し、画像の品質を保持しながらファイルサイズを削減します。また、不要なメタデータ(EXIF情報など)を削除することで、さらにファイルサイズを削減できます。
  • 使用例

    imageoptim --directory ./images
    

このコマンドは、./imagesディレクトリ内のすべての画像を最適化します。オプションを指定することで、圧縮レベルや使用するツールをカスタマイズできます。


7. ImageMagick(変換+圧縮)

  • 概要ImageMagickは、画像の変換や編集を行うためのツールであり、PNG画像の圧縮にも利用できます。
  • 圧縮原理ImageMagickは、画像の再保存時に圧縮レベルやフィルタリング方法を指定することで、ファイルサイズを削減します。ただし、他の専用ツールと比較すると圧縮効果は限定的です。
  • 使用例

    convert input.png -strip -define png:compression-level=9 output.png
    

このコマンドは、メタデータを削除し、最高の圧縮レベルで画像を保存します。


8. ECT(Efficient Compression Tool)

  • 概要ECTは、高圧縮率を実現する無損圧縮ツールであり、PNG画像の最適化にも対応しています。
  • 圧縮原理ECTは、Zopfliアルゴリズムをベースにした独自の圧縮技術を使用して、PNG画像のデータを効率的に圧縮します。これにより、他のツールよりも高い圧縮率を実現することがあります。
  • 使用例

    ect -9 input.png
    

このコマンドは、最高の圧縮レベルで画像を圧縮します。処理時間は長くなりますが、最大限の圧縮効果が得られます。(encode.su)


まとめ

以下に、各ツールの特徴を表にまとめます。

ツール名 圧縮方式 特徴 推奨用途
pngquant 有損 8ビットパレット変換で高圧縮率を実現 ウェブ用画像の軽量化
OptiPNG 無損 フィルタリングとDeflate圧縮の最適化 品質を保持した圧縮
pngcrush 無損 フィルタリングと圧縮パラメータの最適化 詳細な圧縮設定が可能
ZopfliPNG 無損 Zopfliアルゴリズムによる高圧縮率 最終成果物の最適化
PNGOUT 無損 高圧縮率を実現する独自アルゴリズム 最大限の圧縮が必要な場合
ImageOptim-CLI 無損/有損 複数ツールを統合し、メタデータ削除も可能 バッチ処理や自動化
ImageMagick 無損 画像の変換や編集と組み合わせて使用可能 簡易的な圧縮や変換処理
ECT 無損 Zopfliベースの高圧縮率を実現 最大限の圧縮が必要な場合 (Rdrr.io, imageoptim.com, ウィキペディア, GitHub, Stack Overflow)

ご利用の目的や画像の特性に応じて、最適なツールを選択してください。各ツールの詳細な使用方法やインストール手順については、公式ドキュメントや関連資料をご参照ください。

以下は、MacのCLIで使用できるPNG圧縮ツールを**実行速度が速い順(処理時間の短い順)**に並べた一覧です。あわせて、おおよその処理速度傾向と補足情報も記載しています(※画像サイズやマシン性能により前後します)。


📊 実行速度ランキング(速い順)

順位 ツール名 圧縮方式 実行速度傾向 備考
1 pngquant 有損 🔥 非常に速い カラー数削減がメインなので処理が高速。軽量。
2 ImageMagick 無損 🔥 非常に速い 単純な再保存+メタデータ除去に近いため高速。
3 OptiPNG 無損 ✅ 比較的速い 最適化レベルにより時間は変動。-o7はやや遅い。
4 pngcrush 無損 ⏳ やや遅い -bruteオプションは多数の試行を行うため遅い。
5 ImageOptim-CLI 無損/有損 ⏳ やや遅い 内部で複数ツールを使うのでそのぶん遅くなりやすい。
6 PNGOUT 無損 🐢 遅め 圧縮率は高いが試行回数が多いため処理に時間がかかる。
7 ZopfliPNG 無損(Zopfli) 🐢🐢 非常に遅い 高圧縮だが、時間は非常にかかる(1枚数十秒〜)。
8 ECT 無損(Zopfli+α) 🐢🐢🐢 最も遅い 圧縮性能は最強クラスだが、非常に重い。

💡 使い分けのヒント

  • 速度最優先ならpngquant(少しの品質劣化を許容)またはImageMagick(無損)
  • 高速かつ無損が必要ならOptiPNG-o2〜o4程度)
  • 画質保持と圧縮率のバランスImageOptim-CLI(少し時間をかけてでも自動最適化)
  • 最強の圧縮率を狙うならZopfliPNGECT(成果物の最終圧縮など)

⏱参考ベンチマーク例(1000x1000px PNG画像1枚)

ツール 時間 ファイルサイズ圧縮率(目安)
pngquant \~0.2秒 30–70%(有損)
OptiPNG -o2 \~0.5秒 5–10%(無損)
pngcrush -brute \~2–5秒 5–15%
ZopfliPNG \~10–30秒 +1–3%(OptiPNG比)
ECT -9 \~30–60秒 +0.5–2%(ZopfliPNG比)

必要に応じて、複数のツールを**組み合わせて使用(pngquant → OptiPNGなど)**することで、スピードと圧縮率をバランスよく確保することも可能です。

希望があれば、最適な圧縮バッチスクリプトも作成できます。

No.2614
05/29 12:19

edit