37 poin oleh abcdkh1209 2026-02-18 | 7 komentar | Bagikan ke WhatsApp

Mengapa dibuat?

Saya sering memakai tool Google bernama Squoosh, tetapi versi CLI-nya error saat dijalankan, dan versi web-nya memang lumayan berguna, tapi... karena khas Google sering dibiarkan begitu saja, akhirnya saya memutuskan untuk membuatnya sendiri. Saya juga sempat mencari alternatif, tetapi tidak ada yang benar-benar cocok.

Apa itu slimg?

Ini adalah CLI optimasi gambar yang ditulis dengan Rust. Mendukung konversi antar JPEG, WebP, PNG, AVIF, dan QOI, serta resize dan optimasi kualitas. Menggunakan codec modern seperti MozJPEG, OxiPNG, dan ravif.

Hasil penggunaan nyata:

Saya mengoptimalkan secara batch 54GB foto pribadi dan ukurannya turun menjadi 8GB. (berkurang 85%) Kualitasnya hampir tidak terasa berbeda jika dilihat dengan mata telanjang.

# Pemrosesan batch direktori (paralel)  
slimg convert ./photos --format webp --quality 85 --recursive  
  
# Resize + konversi  
slimg resize photo.jpg --width 800 --format avif --quality 70  

Fitur teknis:

  • Pemrosesan paralel di semua core CPU dengan Rayon
  • Overwrite aman dengan temporary file → atomic rename
  • Pemisahan library (slimg-core) dan CLI (bisa digunakan ulang)
  • Performa native melalui binding codec C

Instalasi:

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

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

7 komentar

 
abcdkh1209 2026-02-18

Binding Kotlin untuk slimg telah ditambahkan. Pemrosesan gambar di server/backend kini bisa dilakukan dengan mudah.

 
rainystar 2026-02-23

Saya juga membuat dengan LLM alur untuk menghapus latar belakang dari file yang dibuat sebagai PNG lalu mengonversinya ke SVG sambil mengurangi ukuran dan mempertahankan kualitas. Saya membuatnya dengan Rust, dan bagian konversi ke SVG berjalan sangat baik, tetapi untuk mengurangi ukuran di SVG saya tidak punya pilihan selain menggunakan program bernama svgo. svgo sangat unggul dalam menghapus kode yang tidak perlu dari SVG, tetapi rasanya bagian itu memang memerlukan pengetahuan domain, jadi saya memanfaatkan svgo. Namun, saya tidak kepikiran untuk menggunakan codec terbaru seperti MozJPEG, OxiPNG, dan ravif. Saya jadi ingin mencobanya juga. Terima kasih sudah memberi inspirasi.

 
secret3056 2026-02-20

Saya sebelumnya menggunakan SalOne22/rimage, tetapi sepertinya saya perlu melihat bagaimana yang ini. Untuk saat ini, menyediakan binding Python tampaknya merupakan keunggulan.

 
abcdkh1209 2026-02-19

Binding Python untuk slimg juga telah ditambahkan.

 
click 2026-02-18

Saya juga membuat dan memakai alat di Rust yang mengonversi gambar yang dibundel dalam file arsip secara batch, jadi sepertinya saya perlu mencoba mengubah pemanggilan internalnya ke repositori ini.
Apakah ada alasan tertentu mengapa decoding AVIF hanya tersedia di macOS?

 
abcdkh1209 2026-02-18

Kini, jika Anda menggunakan versi 0.1.3, decoding avif juga tersedia di Windows dan Linux.

 
abcdkh1209 2026-02-18

Hal ini terjadi karena versi library yang menangani avif tidak kompatibel di lingkungan github actions yang digunakan untuk build. Dalam waktu dekat, lingkungan build akan diperbaiki agar mendukung avif juga di mesin Linux.