>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
C-plus-plus

Caesiumで数百枚の画像を劣化なく圧縮する方法

最近、古いプロジェクトの整理をしていたところ、数ギガバイト分のアセットがたまっていました:バナー、ドキュメントのスクリーンショット、記事プレビューなど。これらを最適化せずにリポジトリに送ったり、バケットにアップロードしたりすると、ビルドが肥大化し、ユーザートラフィックを消費してしまうのは確実です。ImageMagickベースのカスタムスクリプトを一回限りのタスク用に書くのは面倒だし、TinyPNGのようなクラウドサービスは無料枠にすぐに達したり、機密ファイルを外部サーバーに送信する必要があったりと、問題があります。

このような状況でCaesium Image Compressorが活躍します。これは、お手元のコンピュータでバッチ画像圧縮を行うオープンソースのデスクトップツールです。

caesium_screenshot_280

内部構造と必要性

このプロジェクトは、Lymphatusというハンドルネームの開発者が長年にわたって開発しています。初版はシンプルさで人気を博しましたが、2番目のブランチからはCaesiumがほぼゼロから書き直されました。

アーキテクチャは興味深いものになっています:

  • GUIはC++でQt6を使用して書かれています。
  • 圧縮と処理はRustで書かれた別のライブラリlibcaesiumで行われます。

QtとRustの組み合わせにより、何百枚もの重いスクリーンショットをキューに追加しても、高速なマルチスレッド性能と低いメモリ消費を実現しています。

主な機能

一般的なフォーマットのサポート

CaesiumはJPG、PNG、WebP(リポジトリの説明ではTIFFも言及)を処理できます。混合ファイルのバッチをプログラムウィンドウにドラッグして共通設定を適用したり、フォーマットごとに個別に設定したりできます。

柔軟な品質と圧縮制御

このユーティリティはロスレス圧縮と制御された品質低下圧縮(ロッシー)の両方をサポートしています。インターフェースでは明確に差分が表示されます:圧縮前後のサイズ、節約率の百分比、結果のプレビュー。

リアルタイムでの解像度リサイズ

多くの場合、デザイナーやコンテンツマネージャーはウェブには1200pxの幅で十分にもかかわらず、4Kや8K解像度でレイアウトを保存してしまいます。Caesiumでは、百分比または固定寸法のどちらかでアスペクト比を保持しながらリサイズを設定できます。

完全な自律性

すべての計算はローカルで行われます。他人のコンピュータで画像を素早く最適化する必要がある場合、プロジェクトにはウェブ版がcaesium.appにありますが、デスクトップクライアントの主な利点はネットワーク非依存性と処理速度です。

ソースからのビルド

WindowsとmacOSでは、GitHubのリリースに готовые installersとポータブル版があります。Linuxユーザーは自分でアプリケーションをビルドするか、サードパーティのビルドを使用する必要があります。

ビルドにはRustコンパイラ(cargo)、CMake、Qt6 SDK(バージョン6.8+)が必要です。

Linux用の設定:

cmake -B build_dir -DCMAKE_PREFIX_PATH=/path/to/Qt/version/gcc_64

MinGW経由のWindows用:

cmake -B build_dir -DCMAKE_PREFIX_PATH=/path/to/Qt/version -G "MinGW Makefiles"

その後、コンパイルを開始します:

cmake --build build_dir --config Release --target caesium_image_compressor

興味深いポイントとして、作者は現在フィードバックを集め、メジャーバージョンであるv3.0.0ブランチの準備を進めており、議論はリポジトリのイシューで行われています。

誰がこのユーティリティを見つけるか

Caesiumは、Web開発者、ブログ作者、写真家、技術ライターの仕事フローに完璧にマッチします。複雑なコンソールパイプラインを設定せずに、リリース、ドキュメント、静的サイト用のグラフィックスを定期的に準備する必要がある場合、このツールは多くの時間を節約します。プログラムのウィンドウに画像のフォルダをドラッグし、1つのボタンを押すだけで、クリーンで最適化されたアセットが手に入ります。

関連プロジェクト