pngquant
は、PNG画像を8ビットのパレット形式に変換することで、ファイルサイズを大幅に削減する有損圧縮ツールです。// install
brew install pngquant
// 圧縮の実行
pngquant --quality=70 --output output.png input.png
このコマンドは、品質を60〜80の範囲に設定して画像を圧縮します。品質の範囲を指定することで、圧縮後の画質を調整できます。品質の数値が高いほど画質が良くなりますが、ファイルサイズも大きくなります。逆に、数値が低いほど画質は劣化しますが、ファイルサイズは小さくなります。適切な品質の範囲を選択することで、画質とファイルサイズのバランスを取ることができます。 (GitHub, Ubunlog)
OptiPNG
は、PNG画像を再圧縮してファイルサイズを削減する無損圧縮ツールです。OptiPNG
は、さまざまなフィルタリング方法と圧縮レベルの組み合わせを試行し、最も効率的な組み合わせを選択して再圧縮を行います。これにより、画像の品質を損なうことなくファイルサイズを削減できます。 使用例:
optipng -o7 input.png
このコマンドは、最も高い最適化レベル(-o7
)で画像を圧縮します。最適化レベルを上げると、圧縮率が向上しますが、処理時間も長くなります。適切な最適化レベルを選択することで、圧縮率と処理時間のバランスを取ることができます。OptiPNG
は、画像の品質を保持しながらファイルサイズを削減したい場合に適しています。特に、ウェブサイトのパフォーマンス向上やストレージの節約に有効です。(Linux Command Library)
pngcrush
は、PNG画像のフィルタリング方法や圧縮パラメータを変更して再圧縮を行う無損圧縮ツールです。pngcrush
は、異なるフィルタリング方法や圧縮パラメータの組み合わせを試行し、最も効率的な組み合わせを選択して再圧縮を行います。また、不要なメタデータ(チャンク)を削除することで、さらにファイルサイズを削減できます。 使用例:
pngcrush -brute input.png output.png
このコマンドは、-brute
オプションを使用して、すべてのフィルタリング方法と圧縮パラメータの組み合わせを試行し、最も効率的なものを選択して再圧縮を行います。処理時間は長くなりますが、最大限の圧縮効果が得られます。pngcrush
は、画像の品質を保持しながらファイルサイズを削減したい場合に適しています。特に、ウェブサイトのパフォーマンス向上やストレージの節約に有効です。(Ubuntu Manpages)
ZopfliPNG
は、Googleが開発したZopfli圧縮アルゴリズムを使用してPNG画像を再圧縮する無損圧縮ツールです。ZopfliPNG
は、PNG画像のデータをZopfliアルゴリズムで再圧縮することで、ファイルサイズをさらに削減します。ただし、圧縮処理には時間がかかるため続きとして、MacのCLIで利用可能なPNG圧縮ツールとその圧縮原理について、さらに詳しくご紹介します。
ZopfliPNG
は、Googleが開発したZopfli圧縮アルゴリズムを使用してPNG画像を再圧縮する無損圧縮ツールです。ZopfliPNG
は、PNG画像のデータをZopfliアルゴリズムで再圧縮することで、ファイルサイズをさらに削減します。ただし、圧縮処理には時間がかかるため、バッチ処理や最終成果物の最適化に適しています。 使用例:
zopflipng --iterations=15 --filters=01234 input.png output.png
このコマンドは、15回の繰り返しとすべてのフィルタを試して最適な圧縮を行います。(ariya.io)
PNGOUT
は、Ken Silverman氏が開発した高圧縮率の無損圧縮ツールです。PNGOUT
は、PNG画像のフィルタリング方法や圧縮パラメータを最適化し、Deflate圧縮を効率的に行います。これにより、他のツールよりも高い圧縮率を実現することがあります。 使用例:
pngout input.png output.png
このコマンドは、デフォルト設定で画像を圧縮します。詳細なオプションを指定することで、さらに圧縮効果を高めることができます。(ウィキペディア)
ImageOptim-CLI
は、ImageOptim
アプリケーションのコマンドラインインターフェースであり、複数の圧縮ツールを統合して画像の最適化を行います。ImageOptim-CLI
は、pngquant
、OptiPNG
、pngcrush
、ZopfliPNG
などのツールを組み合わせて使用し、画像の品質を保持しながらファイルサイズを削減します。また、不要なメタデータ(EXIF情報など)を削除することで、さらにファイルサイズを削減できます。 使用例:
imageoptim --directory ./images
このコマンドは、./images
ディレクトリ内のすべての画像を最適化します。オプションを指定することで、圧縮レベルや使用するツールをカスタマイズできます。
ImageMagick
は、画像の変換や編集を行うためのツールであり、PNG画像の圧縮にも利用できます。ImageMagick
は、画像の再保存時に圧縮レベルやフィルタリング方法を指定することで、ファイルサイズを削減します。ただし、他の専用ツールと比較すると圧縮効果は限定的です。使用例:
convert input.png -strip -define png:compression-level=9 output.png
このコマンドは、メタデータを削除し、最高の圧縮レベルで画像を保存します。
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
(少し時間をかけてでも自動最適化)ZopfliPNG
やECT
(成果物の最終圧縮など)ツール | 時間 | ファイルサイズ圧縮率(目安) |
---|---|---|
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など)**することで、スピードと圧縮率をバランスよく確保することも可能です。
希望があれば、最適な圧縮バッチスクリプトも作成できます。