लिबजपेग

libjpeg जेपीईजी इमेज डेटा फॉर्मेट को संभालने के लिए समारोह (कंप्यूटर विज्ञान)  के साथ एक मुफ्त  पुस्तकालय (कंप्यूटर विज्ञान)  है। यह जेपीईजी डेटा को संभालने के लिए विभिन्न उपयोगिताओं के साथ जेपीईजी कोडेक (एन्कोडिंग और डिकोडिंग) लागू करता है। यह C (प्रोग्रामिंग लैंग्वेज) में लिखा गया है और कस्टम अनुमेय [[मुफ्त सॉफ्टवेयर लाइसेंस ]] (BSD लाइसेंस-लाइक) फ्री सॉफ्टवेयर लाइसेंस की शर्तों के तहत इसके सोर्स कोड के साथ फ्री सॉफ्टवेयर के रूप में वितरित किया गया है, जो एट्रिब्यूशन (कॉपीराइट) की मांग करता है।

मूल संस्करण का रखरखाव और प्रकाशन इंडिपेंडेंट जेपीईजी ग्रुप (आईजेजी) द्वारा किया जाता है। इस बीच, अतिरिक्त सुविधाओं के साथ कई कांटे (सॉफ्टवेयर डेवलपमेंट) हैं।

जेपीईजी जेएफआईएफ छवियों का वेब पर व्यापक रूप से उपयोग किया जाता है। फ़ाइल आकार और दृश्य गुणवत्ता के बीच वांछित व्यापार-बंद को प्राप्त करने के लिए संपीड़न की मात्रा को समायोजित किया जा सकता है।

उपयोगिताएँ
निम्नलिखित यूटिलिटी प्रोग्राम libjpeg के साथ शिप किए गए हैं:
 * cjpeg और djpeg: JPEG और कुछ अन्य लोकप्रिय छवि फ़ाइल स्वरूपों के बीच रूपांतरण करने के लिए।
 * rdjpgcom और wrjpgcom: जेपीईजी फाइलों में शाब्दिक टिप्पणियां डालने और निकालने के लिए।
 * jpegtran: मौजूदा जेपीईजी फाइलों के रूपांतरण के लिए।

जेपीईजीट्रान
आदेश-पंक्ति इंटरफ़ेस|कमांड-लाइन प्रोग्राम जेपीईजीट्रान क्रमशः वास्तविक छवि डेटा के परिवर्तन के लिए और जेपीईजी फ़ाइलों में सहायक डेटा को हटाने के लिए असतत कोसाइन रूपांतरण गुणांक के प्रतिनिधित्व को सुधारने और पुन: कोड करने के लिए कई सुविधाएँ प्रदान करता है। गुणांकों के प्रतिनिधित्व के संबंध में परिवर्तनों में शामिल हैं:
 * संपीड़न बढ़ाने के लिए जेपीईजी फ़ाइल की हफ़मैन कोडिंग  परत का अनुकूलन,
 * प्रगतिशील और अनुक्रमिक जेपीईजी प्रारूपों के बीच रूपांतरण,
 * एन्ट्रापी कोडिंग परत में हफमैन और अंकगणितीय कोडिंग के बीच रूपांतरण। ये परिवर्तन प्रत्येक पूरी तरह दोषरहित और प्रतिवर्ती हैं। छवि डेटा पर परिवर्तनों में शामिल हैं:
 * कुछ छवि कार्यक्रमों द्वारा डाले गए गैर-मानक एप्लिकेशन-विशिष्ट डेटा को समाप्त करें,
 * किसी फ़ाइल में कुछ परिवर्तन करें, जैसे:
 * रंग चैनलों को हटाना (ग्रेस्केल में रूपांतरण),
 * 90 डिग्री के चरणों में घूर्णन और फ़्लिप की गई छवि,
 * इमेज ब्लॉक बॉर्डर पर इमेज क्रॉपिंग या जॉइनिंग (प्रत्येक 8×8 या 16×16 पिक्सल),
 * रीस्केलिंग। ये केवल रखे गए छवि डेटा के संबंध में दोषरहित और प्रतिवर्ती हैं। छवि डेटा (पीढ़ी का नुकसान) के बार-बार हानिपूर्ण परिमाणीकरण के साथ रीकोडिंग नहीं होती है।

एक संबद्ध विंडोज एप्लिकेशन है, Jpegcrop, जो jpegtran को एक यूजर इंटरफेस प्रदान करता है। लिनक्स जैसी यूनिक्स जैसी प्रणालियों के लिए समान कार्यक्षमता के साथ मुफ्त CropGUI है।

दोषरहित एप्लिकेशन सूची पर IJG कोड के आधार पर JPEG दोषरहित रूपांतरण कार्यों का समर्थन करने वाले और प्रोग्राम दिए गए हैं।

इतिहास
इंडिपेंडेंट जेपीईजी ग्रुप (आईजेजी) का जेपीईजी कार्यान्वयन पहली बार 7 अक्टूबर 1991 को सार्वजनिक रूप से जारी किया गया था और उस समय से इसे काफी विकसित किया गया है। विकास शुरू में मुख्य रूप से टॉम लेन (कंप्यूटर वैज्ञानिक) द्वारा किया गया था। IJG का खुला स्रोत सॉफ्टवेयर  | ओपन-सोर्स कार्यान्वयन प्रमुख ओपन-सोर्स पैकेजों में से एक था और JPEG मानक की सफलता के लिए महत्वपूर्ण था। कई कंपनियों ने इसे छवि संपादकों और वेब ब्राउज़र जैसे विभिन्न उत्पादों में शामिल किया।

संस्करण 5 के लिए, जो 24 सितंबर, 1994 को जारी किया गया था, पूरे कोड बेस को फिर से लिखा गया था। इसने एम्बेडेड टेक्स्ट टिप्पणियों को संभालने के लिए यूटिलिटी प्रोग्राम rdjpgcom और wrjpgcom पेश किया। 2 अगस्त 1995 से संस्करण 6 प्रगतिशील JPEG के समर्थन के साथ आया और पहली बार उपयोगिता कार्यक्रम jpegtran के साथ आया। यह उपयोगिता छवियों को घुमाने और फ़्लिप करने और संस्करण 6b में ग्रेस्केल कमी के लिए सुविधाओं के साथ विस्तारित की गई थी।

libjpeg-टर्बो और वंशज
27 मार्च 1998 के libjpeg के संस्करण 6b से, मियासाका मसरू ने libjpeg/SIMD नाम की एक शाखा को फोर्क किया, जिसमें x86 SIMD अनुकूलन शामिल थे। इसे 2009 में TigerVNC और VirtualGL प्रोजेक्ट्स से पर्याप्त योगदान मिला। उस आधार पर 2010 में libjpeg-turbo प्रोजेक्ट बनाया गया था।

4 मार्च 2014 को, फाइलसाइज-ऑप्टिमाइज़िंग फोर्क mozjpeg का पहला संस्करण प्रकाशित किया गया था। इस संस्करण के लिए Mozilla Research के जोश आस ने x264 के मुख्य डेवलपर लोरेन मेरिट से पर्ल स्क्रिप्ट jpegcrush पर फिर से काम किया और इसे libjpeg-turbo के कोड बेस में एकीकृत किया।

10 जुलाई 2014 को, मोज़िला ने संस्करण 2.0 जारी किया, जिसमें मुख्य रूप से ट्रेलिस क्वांटिज़ेशन जोड़ा गया और अब बेसलाइन जेपीईजी के आकार को भी कम करने में सक्षम है। Facebook, Inc. ने दान किया $60,000 dollars$ अगले संस्करण के विकास के लिए, और Mozjpeg के सुधार के लिए CloudFlare ने एक डेवलपर को नियुक्त किया।

2019 में, libjpeg-turbo JPEG प्रारूप के लिए ISO और ITU समर्थित संदर्भ कार्यान्वयन बन गया।

IJG नेतृत्व में परिवर्तन
11 वर्षों और नेतृत्व में बदलाव के बाद, गुइडो वोलबेडिंग के तहत IJG ने libjpeg (7 से 9) के नए संस्करण जारी किए, जिनमें से प्रत्येक ने पिछले संस्करणों के साथ ABI संगतता को तोड़ दिया। 6x श्रृंखला के बाद संभावना में किए गए परिवर्तन वितरित नहीं किए गए थे। संस्करण 7 में, अंकगणितीय कोडिंग के लिए समर्थन पेश किया गया था, जिसे पहले सॉफ्टवेयर पेटेंट की स्थिति के साथ-साथ jpegtran में क्रॉप फीचर के कारण खारिज कर दिया गया था.

संस्करण 8 और 9 मूल रूप से विवादास्पद की शुरूआत के लिए काम करते थे असंगत प्रारूप एक्सटेंशन। इन्हें व्यापक रूप से अप्रभावी और मौजूदा, मानकीकृत समाधानों से हीन माना जाता है। आईटीयू-टी को जमा करने के बाद उनके मानकीकरण को खारिज कर दिया गया था। मूल आयोजक टॉम लेन और अन्य ने आईजेजी के लक्ष्यों से विराम के रूप में इन परिवर्तनों की आलोचना की।

कांटे
जाने-माने कांटे हैं libjpeg-turbo, जो निष्पादन की गति के लिए अनुकूलन करता है, और mozjpeg, जो छोटे फ़ाइल आकारों के लिए अनुकूलन करता है।

मानकीकरण के लिए अंतर्राष्ट्रीय संगठन से #ISO libjpeg भी है, जिसका उद्देश्य JPEG, JPEG XT और JPEG-LS मानकों का पूर्ण कार्यान्वयन करना है।

libjpeg-टर्बो
libjpeg-turbo libjpeg का एक फोर्क (सॉफ्टवेयर डेवलपमेंट) है जो बेसलाइन JPEG एन्कोडिंग और डिकोडिंग को तेज करने के लिए SIMD निर्देश समुच्चय  का उपयोग करता है। लोकप्रिय Linux वितरण (Fedora (ऑपरेटिंग सिस्टम), Debian, Mageia, openSUSE, ...), Mozilla, और Google Chrome सहित कई प्रोजेक्ट अब libjpeg के बजाय libjpeg-turbo का उपयोग कर रहे हैं।  प्रदर्शन के अलावा, कुछ परियोजनाओं ने libjpeg-turbo का उपयोग करना चुना है क्योंकि यह उन्हें पुराने libjpeg v6b रिलीज के साथ पिछड़े अनुप्रयोग बाइनरी इंटरफ़ेस संगतता को बनाए रखने की अनुमति देता है। libjpeg v7, v8 और v9 ने पूर्व रिलीज के साथ एबीआई संगतता तोड़ दी।

libjpeg-turbo libjpeg v7 में देखी गई मानक-अनुरूप अंकगणितीय कोडिंग और दोषरहित क्रॉप सुविधाओं को लागू करता है। इसे libjpeg v7 या v8 ABI के साथ संगत होने के लिए भी कॉन्फ़िगर किया जा सकता है, लेकिन यह DCT स्केलिंग और स्वामित्व वाले SmartScale को कार्यान्वित करता है, जो DCT स्केलिंग पर निर्मित होता है। libjpeg-turbo SmartScale का समर्थन नहीं करने का विकल्प चुनता है, क्योंकि यह एक ITU-T मानक नहीं है और क्योंकि उनका अपना शोध इसे (और DCT स्केलिंग) अप्रभावी पाता है। विस्तार से, चूंकि libjpeg v9 में एकमात्र प्रमुख नई सुविधा स्मार्टस्केल प्रारूप के लिए विशिष्ट है, libjpeg-turbo प्रोजेक्ट ने libjpeg v9 का अनुकरण करना छोड़ दिया है।

2019 से, libjpeg-turbo दो JPEG संदर्भ कार्यान्वयनों में से एक है, जो ISO/IEC 10918-7 और ITU-T T.873 के रूप में उपलब्ध है। अन्य संदर्भ कार्यान्वयन ISO libjpeg है जिसमें JPEG XT और JPEG LS के लिए समर्थन भी शामिल है।

mozjpeg
mozjpeg जोश आस और Mozilla Research के अन्य लोगों द्वारा किए गए libjpeg-turbo का एक कांटा है। इसका उद्देश्य छवि गुणवत्ता को बनाए रखते हुए कोडिंग दक्षता में सुधार के माध्यम से फ़ाइल आकार (लगभग 10%) में कमी और इसलिए संचरण समय प्राप्त करके वेबपृष्ठों के लोडिंग समय को तेज करना है। इसे प्राप्त करने के लिए, यह जेपीईजी मानक के साथ पूर्ण संगतता बनाए रखते हुए एन्कोडिंग (विषमता) के लिए अधिक प्रसंस्करण शक्ति का उपयोग करता है और डिकोडर पक्ष पर कोई बदलाव नहीं करता है।

उच्च संपीड़न प्राप्त करने के लिए mozjpeg जिन तकनीकों का उपयोग करता है, उनमें हफ़मैन कोडिंग ट्री का अनुकूलन, DCT गुणांकों के स्पेक्ट्रम को अलग-अलग स्कैन में बेहतर ढंग से विभाजित करने के लिए प्रगतिशील कोडिंग का उपयोग करना और जाली परिमाणीकरण के उपयोग के माध्यम से शामिल हैं। इसके अतिरिक्त, प्रीसेट आक्रामक रूप से फ़ाइल आकार को कम करने की दिशा में देखते हैं।

Libjpeg-turbo के अलावा, mozjpeg भी jpegcrush पर बनाता है, लोरेन मेरिट द्वारा एक पर्ल स्क्रिप्ट।

आईएसओ libjpeg
ISO/IEC संयुक्त फ़ोटोग्राफ़ी विशेषज्ञ समूह आधार JPEG (ISO/IEC 10918-1 और 18477-1) और JPEG XT एक्सटेंशन (ISO/IEC 18477 भाग 2 और 6-9) के साथ-साथ दोषरहित JPEG- के लिए एक संदर्भ सॉफ़्टवेयर कार्यान्वयन रखता है। एलएस (आईएसओ/आईईसी 14495)। इसमें mozjpeg के कुछ ऑप्टिमाइज़ेशन भी शामिल हैं। हालांकि इसका नाम libjpeg भी है, यह स्वतंत्र जेपीईजी समूह (आईजेजी) द्वारा प्रदान किए गए स्रोत कोड से संबंधित नहीं है और 2007 से आईजेजी द्वारा पेश किए गए स्वामित्व एक्सटेंशन का समर्थन नहीं करता है।

यह भी देखें

 * हानिपूर्ण संपीड़न ट्रांसकोडिंग और संपादन
 * गुत्ज़ली

बाहरी संबंध

 * JPEGclub – Additional features for libjpeg
 * JPEG FAQs
 * libjpeg-turbo, an ABI-/API-compatible fork of libjpeg that uses x86 SIMD instructions to achieve a substantial speedup over the reference implementation.
 * libjpeg-turbo, an ABI-/API-compatible fork of libjpeg that uses x86 SIMD instructions to achieve a substantial speedup over the reference implementation.