37 ポイント 投稿者 abcdkh1209 2026-02-18 | 7件のコメント | WhatsAppで共有

なぜ作ったのか?

GoogleのSquooshというツールを愛用していましたが、CLI版は実行するとエラーが出て、Web版は使えるものの……Google特有の放置状態だったため、結局自分で作ることにしました。代替を探しましたが、気に入るものはありませんでした。

slimgとは?

Rustで書かれた画像最適化CLIです。JPEG、WebP、PNG、AVIF、QOI間の変換とリサイズ、品質最適化をサポートします。MozJPEG、OxiPNG、ravifのような最新コーデックを使用します。

実際の使用結果:

個人写真54GBを一括最適化したところ、8GBまで減りました。(85%削減)品質は肉眼ではほとんど違いが分からないレベルです。

# ディレクトリを一括処理(並列)  
slimg convert ./photos --format webp --quality 85 --recursive  
  
# リサイズ + 変換  
slimg resize photo.jpg --width 800 --format avif --quality 70  

技術的な特徴:

  • Rayonによる全CPUコア並列処理
  • 一時ファイル → atomic renameによる安全な上書き
  • ライブラリ(slimg-core)とCLIを分離(再利用可能)
  • Cコーデックバインディングによるネイティブ性能

インストール:

brew install clroot/tap/slimg  
# https://github.com/clroot/slimg/releases  

GitHub: https://github.com/clroot/slimg

7件のコメント

 
abcdkh1209 2026-02-18

slimg のKotlinバインディングが追加されました。サーバー/バックエンドで画像処理を手軽に行えます。

 
rainystar 2026-02-23

私も、pngで生成されたファイルで背景を削除してsvgに変換し、容量を減らしつつ品質を保持するものをLLMで作りました。Rustで作っていて、svgへの変換はとてもうまくいったのですが、svgで容量を減らすには svgo というプログラムを使うしかありませんでした。svgo はsvgで不要なコードを削減する技術に優れているのですが、これはドメイン知識が必要な部分のようで、そのため svgo を活用していました。
ところが、MozJPEG、OxiPNG、ravif のような最新コーデックを使うことは思いつきませんでした。私も一度試してみたくなりました。インスピレーションをありがとうございます。

 
secret3056 2026-02-20

私はこれまで SalOne22/rimage を使っていましたが、これはどうなのか見てみる必要がありそうですね。ひとまず、Python バインディングを提供しているのは利点のように思います。

 
abcdkh1209 2026-02-19

slimg の Python バインディングも追加されました。

 
click 2026-02-18

私も圧縮ファイルにまとめられている画像を一括変換してくれるツールをRustで作って使っているので、このリポジトリに内部呼び出しを変更してみようと思います。
avif のデコードが macOS でしかできないのは、何か特定の理由があるのでしょうか?

 
abcdkh1209 2026-02-18

これで 0.1.3 バージョンを使用すると、Windows、Linux でも AVIF のデコードが可能です。

 
abcdkh1209 2026-02-18

ビルドに使用した GitHub Actions 環境で、avif を扱うライブラリのバージョンに互換性がないためです。近いうちにビルド環境を修正し、Linux マシンでも avif をサポートするよう対応する予定です。