पेश है libSquoosh

यह Squoosh है, लेकिन यह Node लाइब्रेरी की तरह है.

हमें libSquoosh लॉन्च करते हुए खुशी हो रही है. यह एक एक्सपेरिमेंटल नोड लाइब्रेरी है. इसके ऊपर Squoosh सीएलआई को बनाया गया है. इससे आपको JavaScript-idiomatic इंटरफ़ेस के साथ Squoosh सीएलआई की सभी सुविधाएं मिलती हैं.

Squoosh.app एक PWA है, जो ब्राउज़र में आपके लिए इमेज को कंप्रेस करता है. यह कई पुराने और नए इमेज फ़ॉर्मैट के साथ काम करता है और उन्हें ब्राउज़र में WebAssembly के ज़रिए प्रोसेस करता है. इसका मतलब है कि आपकी तस्वीरें कहीं और सर्वर पर भेजे जाने के बजाय, आपके अपने कंप्यूटर पर सुरक्षित रहती हैं और Squoosh ऑफ़लाइन होने पर भी काम करता है.

Chrome DevSummit 2020 में हमने Squoosh v2 का एलान किया और Squoosh सीएलआई के साथ मिलकर, Node और WebAssembly का इस्तेमाल करके Squoosh के सभी कोडेक को कमांड-लाइन में जोड़ दिया. इससे आपको एक निर्देश से पूरे फ़ोल्डर को कंप्रेस करने की सुविधा मिलती है. साथ ही, सीएलआई का इस्तेमाल करके, यह आपके लिए कोडेक पैरामीटर चुन सकता है.

सीएलआई बहुत सारे ऑटोमेशन की सुविधा देता है. इसलिए, यह स्वाभाविक है कि डेवलपर ने शेल के ज़रिए प्रोग्राम की मदद से, Squoosh सीएलआई को शुरू करने के बजाय, ज़्यादा मुहावरे वाले इंटरफ़ेस की मांग करना शुरू किया हो. Anton (GitHub पर @athn) ने इस काम को आगे बढ़ाया और Squoosh सीएलआई कोड को दो हिस्सों में अलग किया: कमांड लाइन इंटरफ़ेस कोड और बुनियादी मुख्य फ़ंक्शन.

import { ImagePool } from "@squoosh/lib";

// libSquoosh uses a worker-pool under the hood
// to parallelize all image processing.
const imagePool = new ImagePool();

// Accepts both file paths and Buffers/TypedArrays.
const image = imagePool.ingestImage("./squoosh.jpeg");

// Optional.
// await image.preprocess({
//   resize: {
//     enabled: true,
//     width: 128,
//   },
// });

await image.encode({
  // All codecs are initialized with default values
  // that can be individually overwritten.
  mozjpeg: {
    quality: 10,
  },
  avif: {
    cqLevel: 10,
  },
  jxl: {},
});

const { extension, binary } = await image.encodedWith.mozjpeg;
await fs.writeFile(`output.${extension}`, binary);
// ... same for other encoders ...

await imagePool.close();

हमारा लक्ष्य टूलिंग लेखकों के लिए इमेज कंप्रेशन को ज़्यादा सुलभ बनाना है. हमें वेबपैक, रोलअप, और अन्य बिल्ड टूल में इंटिग्रेशन मिलने की उम्मीद है. इससे यह पक्का किया जा सकेगा कि आपकी इमेज, वेब के लिए सही तरीके से ऑप्टिमाइज़ की गई हैं.

मैं एंटन को उस समय के लिए बहुत-बहुत "धन्यवाद" देना चाहता हूं, जब उन्होंने स्क्वॉश के साथ काम करने का वादा किया था!

Squoosh CLI और libSquoosh के लिए अभी हमारी शुरुआत ही हुई है. साथ ही, हमारे पास और भी कई आइडिया और प्लान हैं, जिन्हें हम लागू करना चाहते हैं. इस बीच, libSquoosh आज़माएं! हालांकि, ध्यान रखें कि यह एक शुरुआती रिलीज़ है और इसे एक्सपेरिमेंट के तौर पर शुरू किया गया है. इसलिए, इस बात की काफ़ी संभावना है कि आपको कुछ गड़बड़ियां मिल जाएं. अगर आपको कुछ सवाल मिलते हैं या कुछ पूछना है, तो कृपया समस्या के बारे में बताएं.

अगर आपकी दिलचस्पी Squoosh में योगदान देने में है, तो हम आपका मेंटॉरशिप प्रोग्राम शुरू कर रहे हैं. उदाहरण के लिए, libSquoosh से जुड़े बेहद ज़रूरी दस्तावेज़ में योगदान देना या ऐप्लिकेशन के किसी अन्य हिस्से में मदद करना. अगर आपको ज़्यादा जानकारी चाहिए, तो ट्रैकिंग से जुड़ी समस्या देखें.