37 पॉइंट द्वारा abcdkh1209 2026-02-18 | 7 टिप्पणियां | WhatsApp पर शेयर करें

यह क्यों बनाया गया?

मैं Google के Squoosh टूल का अक्सर इस्तेमाल करता था, लेकिन उसका CLI version चलाने पर error देता था और web version उपयोग लायक तो था, पर... Google की खास तरह की उपेक्षा वाली स्थिति देखकर आखिरकार मैंने इसे खुद बनाने का फैसला किया। विकल्प भी खोजे, लेकिन कोई पसंद नहीं आया।

slimg क्या है?

यह Rust में लिखा गया एक image optimization CLI है। यह JPEG, WebP, PNG, AVIF, QOI के बीच conversion, resize और quality optimization को support करता है। यह MozJPEG, OxiPNG, ravif जैसे आधुनिक codec का उपयोग करता है।

वास्तविक उपयोग का परिणाम:

मैंने 54GB की निजी photos को batch optimization किया और आकार 8GB तक घट गया। (85% कमी) quality ऐसी रही कि नंगी आंखों से लगभग कोई फर्क महसूस नहीं होता।

# directory batch processing (parallel)  
slimg convert ./photos --format webp --quality 85 --recursive  
  
# resize + conversion  
slimg resize photo.jpg --width 800 --format avif --quality 70  

तकनीकी विशेषताएँ:

  • Rayon के साथ सभी CPU cores पर parallel processing
  • temporary file → atomic rename के जरिए सुरक्षित overwrite
  • library (slimg-core) और CLI अलग (दोबारा उपयोग योग्य)
  • C codec bindings के जरिए native performance

इंस्टॉलेशन:

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

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

7 टिप्पणियां

 
abcdkh1209 2026-02-18

slimg की Kotlin binding जोड़ दी गई है। अब server/backend में image processing को आसानी से संभाला जा सकता है।

 
rainystar 2026-02-23

मैंने भी PNG में बने फ़ाइलों से background remove करके उन्हें SVG में convert करते हुए size कम करने और quality बनाए रखने वाला एक टूल LLM की मदद से बनाया है। इसे Rust में बनाया था, और SVG में convert करना तो बहुत अच्छी तरह हो गया, लेकिन SVG का size कम करने के लिए आखिरकार svgo नाम के प्रोग्राम का इस्तेमाल करना ही पड़ा। svgo SVG में गैर-ज़रूरी कोड कम करने में बहुत सक्षम है, लेकिन मुझे लगा कि यह ऐसा हिस्सा है जिसके लिए domain knowledge चाहिए, इसलिए मैं svgo का उपयोग कर रहा था.
लेकिन MozJPEG, OxiPNG, ravif जैसे आधुनिक codecs का उपयोग करने के बारे में मैंने सोचा ही नहीं था। अब मैं भी इसे एक बार आज़माना चाहता हूँ। प्रेरणा देने के लिए धन्यवाद।

 
secret3056 2026-02-20

मैं पहले से SalOne22/rimage इस्तेमाल कर रहा था, तो देखना पड़ेगा कि यह कैसा है। फिलहाल Python binding देना इसका एक फ़ायदा लगता है।

 
abcdkh1209 2026-02-19

slimg के लिए Python bindings भी जोड़ी गई हैं।

 
click 2026-02-18

मैं भी Rust में एक टूल बनाकर इस्तेमाल कर रहा हूँ जो compressed files में बंधी images को bulk में convert कर देता है, इसलिए लगता है कि मुझे इस repository के लिए internal calls बदलकर देखना चाहिए.
क्या avif decoding के सिर्फ macOS पर ही उपलब्ध होने की कोई खास वजह है?

 
abcdkh1209 2026-02-18

अब 0.1.3 वर्ज़न का उपयोग करने पर Windows और Linux में भी avif decoding संभव है।

 
abcdkh1209 2026-02-18

यह इसलिए है क्योंकि build में इस्तेमाल किए गए GitHub Actions environment में avif को handle करने वाली library का version compatible नहीं है। जल्द ही build environment को ठीक करके Linux machine पर भी avif support जोड़ा जाएगा।