37 Punkte von abcdkh1209 2026-02-18 | 7 Kommentare | Auf WhatsApp teilen

Warum wurde es entwickelt?

Ich habe das Tool Squoosh von Google gern genutzt, aber die CLI-Version wirft beim Ausführen Fehler, und die Web-Version war zwar brauchbar, doch... wegen Googles typischem Vernachlässigungszustand habe ich mich am Ende entschieden, es selbst zu bauen. Ich habe nach Alternativen gesucht, aber nichts gefunden, das mir gefiel.

Was ist slimg?

Es ist eine in Rust geschriebene CLI zur Bildoptimierung. Sie unterstützt Konvertierungen zwischen JPEG, WebP, PNG, AVIF und QOI, außerdem Resize und Qualitätsoptimierung. Verwendet werden moderne Codecs wie MozJPEG, OxiPNG und ravif.

Ergebnis im Praxiseinsatz:

Ich habe 54 GB persönliche Fotos in einem Batch optimiert und auf 8 GB reduziert. (85 % weniger) Die Qualität liegt auf einem Niveau, bei dem man mit bloßem Auge kaum einen Unterschied erkennt.

# Stapelverarbeitung eines Verzeichnisses (parallel)  
slimg convert ./photos --format webp --quality 85 --recursive  
  
# Resize + Konvertierung  
slimg resize photo.jpg --width 800 --format avif --quality 70  

Technische Merkmale:

  • Parallele Verarbeitung auf allen CPU-Kernen mit Rayon
  • Sichere Überschreibung per temporärer Datei → atomic rename
  • Trennung von Bibliothek (slimg-core) und CLI (wiederverwendbar)
  • Native Performance durch C-Codec-Bindings

Installation:

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

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

7 Kommentare

 
abcdkh1209 2026-02-18

Die Kotlin-Bindings für slimg wurden hinzugefügt. Damit lässt sich die Bildverarbeitung auf Servern/im Backend ganz einfach handhaben.

 
rainystar 2026-02-23

Ich habe so etwas ebenfalls mit einem LLM erstellt: bei als PNG erzeugten Dateien den Hintergrund entfernen, sie in SVG umwandeln, dabei die Größe reduzieren und die Qualität erhalten. Es wurde in Rust entwickelt, und die Umwandlung nach SVG funktionierte sehr gut, aber um die Dateigröße von SVG weiter zu verringern, blieb mir nichts anderes übrig, als ein Programm namens svgo zu verwenden. svgo ist hervorragend darin, unnötigen Code aus SVG zu entfernen, aber das scheint ein Bereich zu sein, für den man Domänenwissen braucht, daher habe ich svgo genutzt.
Allerdings war ich nicht auf die Idee gekommen, moderne Codecs wie MozJPEG, OxiPNG oder ravif einzusetzen. Das würde ich auch gern einmal ausprobieren. Danke für die Inspiration.

 
secret3056 2026-02-20

Ich nutze bisher SalOne22/rimage, aber hier muss ich wohl erst noch sehen, wie es sich schlägt. Dass es Python-Bindings anbietet, scheint jedenfalls ein Vorteil zu sein.

 
abcdkh1209 2026-02-19

Auch Python-Bindings für slimg wurden hinzugefügt.

 
click 2026-02-18

Ich nutze ebenfalls ein Tool, das in Rust geschrieben ist und in Archiven gebündelte Bilder stapelweise konvertiert; ich sollte wohl die internen Aufrufe auf dieses Repository umstellen.
Gibt es zufällig einen bestimmten Grund dafür, dass AVIF-Decoding nur unter macOS möglich ist?

 
abcdkh1209 2026-02-18

Ab Version 0.1.3 ist AVIF-Decoding nun auch unter Windows und Linux möglich.

 
abcdkh1209 2026-02-18

Das liegt daran, dass in der GitHub-Actions-Umgebung, die für den Build verwendet wurde, die Versionen der Bibliotheken zur Verarbeitung von AVIF nicht kompatibel sind. Ich werde die Build-Umgebung in Kürze anpassen, damit AVIF auch auf Linux-Maschinen unterstützt wird.