नाम
cwebp -- किसी इमेज फ़ाइल को WebP फ़ाइल में कंप्रेस करें
सारांश
cwebp [options] input_file -o output_file.webp
ब्यौरा
cwebp, WebP फ़ॉर्मैट का इस्तेमाल करके इमेज को कंप्रेस करता है. इनपुट फ़ॉर्मैट इनमें से कोई एक हो सकता है:
PNG, JPEG, TIFF, WebP या रॉ Y'CbCr के सैंपल.
ध्यान दें: ऐनिमेटेड PNG और WebP फ़ाइलों का इस्तेमाल नहीं किया जा सकता.
विकल्प
बुनियादी विकल्प ये हैं:
-o string- आउटपुट WebP फ़ाइल का नाम बताएं. अगर इसे छोड़ दिया जाता है, तो
cwebpकाम करेगा संपीड़न लेकिन केवल आंकड़ों की रिपोर्ट करें. आउटपुट के नाम के तौर पर "-" का इस्तेमाल करने पर, आउटपुट 'stdout' पर भेज दिया जाएगा. -- string- इनपुट फ़ाइल के बारे में साफ़ तौर पर बताएं. यह विकल्प तब काम आता है, जब इनपुट फ़ाइल '-' से शुरू होती है. यह विकल्प
lastके तौर पर दिखना चाहिए. इसके बाद, किसी भी अन्य विकल्प को अनदेखा कर दिया जाएगा. -h, -help- इस्तेमाल के बारे में खास जानकारी.
-H, -longhelp- सभी संभावित विकल्पों की खास जानकारी.
-version- वर्शन नंबर (Major.minor.revision) प्रिंट करें और बाहर निकलें.
-lossless- बिना किसी डेटा के नुकसान के इमेज को एन्कोड करें. पूरी तरह से पारदर्शी हिस्से वाली इमेज के लिए,
-exactविकल्प का इस्तेमाल करने पर ही, न दिखने वाली पिक्सल वैल्यू (R/G/B या Y/U/V) को सेव किया जाएगा. -near_lossless int- इमेज को प्री-प्रोसेस करने के लिए, ज़्यादा से ज़्यादा डेटा बनाए रखने का लेवल तय करें. इस विकल्प से बदलाव हो जाता है
पिक्सल वैल्यू की मदद से कंप्रेस करने में मदद मिलती है. हालांकि, विज़ुअल पर इसका कम असर पड़ता है
क्वालिटी. यह लॉसलेस कम्प्रेशन मोड को अपने-आप ट्रिगर करता है.
इसकी सीमा
0(ज़्यादा से ज़्यादा प्री-प्रोसेसिंग) से लेकर100(कोई प्री-प्रोसेसिंग नहीं, डिफ़ॉल्ट) तक है. आम तौर पर, यह वैल्यू60के आस-पास होती है. ध्यान दें कि-q 100कभी-कभी लॉसली एन्कोडिंग से बेहतर नतीजे मिल सकते हैं. -q floatयह तय करें कि
0से100के बीच के आरजीबी चैनलों के लिए, कंप्रेस करने का फ़ैक्टर क्या है. डिफ़ॉल्ट वैल्यू75है.नुकसान पहुंचाने वाले कंप्रेशन (डिफ़ॉल्ट) की स्थिति में, छोटा फ़ैक्टर लागू करने पर निम्न गुणवत्ता वाली फ़ाइल. सबसे अच्छी क्वालिटी पाने के लिए,
100की वैल्यू का इस्तेमाल करें.लॉसलेस कंप्रेशन (
-losslessविकल्प में बताया गया) के मामले में, एक छोटा फ़ैक्टर, तेज़ कंप्रेशन स्पीड को चालू करता है, लेकिन बड़ी फ़ाइल जनरेट करता है.100की वैल्यू का इस्तेमाल करके, ज़्यादा से ज़्यादा कम्प्रेशन किया जा सकता है.-z intlosslessकंप्रेसन मोड को 0 से 9 के बीच के लेवल पर चालू करें. लेवल 0 सबसे तेज़ और लेवल 9 सबसे धीमा होता है. तेज़ मोड धीमी रफ़्तार वाली फ़ाइल के मुकाबले ज़्यादा बड़ी फ़ाइल फ़ॉर्मैट बनाता है.-z 6एक अच्छा डिफ़ॉल्ट विकल्प है. असल में, यह विकल्प क्वालिटी और तरीके के लिए पहले से तय की गई कुछ सेटिंग का शॉर्टकट है. अगर बाद में-qया-mविकल्पों का इस्तेमाल किया जाता है, तो इस विकल्प का असर नहीं पड़ेगा.-alpha_q intऐल्फ़ा कंप्रेशन के लिए,
0और के बीच कंप्रेशन फ़ैक्टर तय करें100. ऐल्फ़ा का लॉसलेस कंप्रेस करने के लिए,100वैल्यू का इस्तेमाल किया जाता है. जबकि कम वैल्यू की वजह से कंप्रेशन कम हो जाता है. डिफ़ॉल्ट तौर पर, यह100पर सेट होता है.-preset stringकिसी खास टाइप के पैरामीटर के इस्तेमाल के हिसाब से, पहले से तय पैरामीटर का सेट तय करें जिस सोर्स कॉन्टेंट का इस्तेमाल किया जा रहा है. ये वैल्यू इस्तेमाल की जा सकती हैं:
default,photo,picture,drawing,icon,text.-preset,-qके अलावा अन्य पैरामीटर की वैल्यू को ओवरराइट करता है. इसलिए, यह विकल्प आर्ग्युमेंट के क्रम में सबसे पहले दिखना चाहिए.-m intबताएं कि कंप्रेस करने के लिए किस तरीके का इस्तेमाल करना है. यह पैरामीटर, ट्रेड को कंट्रोल करता है को एन्कोडिंग स्पीड और कंप्रेस किए गए फ़ाइल साइज़ और क्वालिटी के बीच स्विच किया जा सकता है. वैल्यू की सेल
0से6तक हो सकती है. डिफ़ॉल्ट वैल्यू4है. ज़्यादा होने पर वैल्यू का इस्तेमाल किया जाता है, तो एन्कोडर को यह जांचने के लिए ज़्यादा समय मिलता है कि एन्कोडिंग की संभावनाओं पर ध्यान दिया जाता है. साथ ही, यह तय किया जाता है कि क्वालिटी में क्या बदलाव किया जाएगा. कम वैल्यू से, प्रोसेस करने में कम समय लग सकता है. हालांकि, इससे फ़ाइल का साइज़ बड़ा हो जाता है और कंप्रेस करने की क्वालिटी भी खराब हो जाती है.-crop x_position y_position width heightसोर्स को रेक्टैंगल में काटें. रेक्टैंगल का सबसे ऊपर बाईं ओर का कोना, निर्देशांक (
x_position,y_position) पर और साइज़widthxheightपर होना चाहिए. यह क्रॉपिंग एरिया, सोर्स रेक्टैंगल के अंदर पूरी तरह से शामिल होना चाहिए. ध्यान दें: काट-छांट करने की सुविधा, स्केलिंग करने से पहले लागू होती है.-resize width heightसोर्स का साइज़ बदलकर,
widthxheightवाला रेक्टैंगल बनाएं. अगर चौड़ाई या ऊंचाई पैरामीटर में से कोई एक (दोनों नहीं)0है, तो वैल्यू का हिसाब आसपेक्ट रेशियो को बनाए रखते हुए लगाया जाएगा. ध्यान दें: स्केलिंग, बाद में लागू होती है काट-छांट करना.-mtअगर हो सके, तो कोड में बदलने के लिए मल्टी-थ्रेडिंग का इस्तेमाल करें.
-low_memoryआम तौर पर, कॉम्प्रेस किए गए साइज़ का चार गुना स्टोर करके, लॉस वाली एन्कोडिंग के लिए मेमोरी का इस्तेमाल कम करें. इससे एन्कोडिंग धीमी हो जाएगी और आउटपुट साइज़ और डिस्टॉर्शन में थोड़ा अलग है. यह फ़्लैग सिर्फ़ तीसरे और उसके बाद के तरीकों के लिए काम करता है. यह डिफ़ॉल्ट रूप से बंद होता है. ध्यान दें कि इस फ़्लैग को बंद रखने पर, बिटस्ट्रीम पर कुछ असर पड़ेगा: इससे बिटस्ट्रीम की कुछ सुविधाओं पर असर पड़ता है, जैसे कि पार्टीशन की संख्या (
1पर फ़ोर्स किया जाता है). ध्यान दें कि इस विकल्प का इस्तेमाल करने पर, बिटस्ट्रीम के साइज़ की ज़्यादा जानकारी वाली रिपोर्टcwebpसे प्रिंट की जाती है.
नुकसान पहुंचाने वाले विकल्प
ये विकल्प सिर्फ़ तब काम करते हैं, जब नुकसान पहुंचाने वाले कोड में बदलने का तरीका इस्तेमाल किया जाता है. डिफ़ॉल्ट रूप से, या अल्फ़ा के बिना).
-size int- कंप्रेस किए गए आउटपुट के लिए, टारगेट साइज़ (बाइट में) तय करें. इस टारगेट के ज़्यादा से ज़्यादा करीब पहुंचने के लिए, कंप्रेसर कुछ हिस्से को कई बार एन्कोड करेगा. अगर
-sizeऔर-psnr, दोनों का इस्तेमाल किया जाता है, तो-sizeवैल्यू लागू होगी. -psnr float- कंप्रेस किए गए आउटपुट तक पहुंचने के लिए, टारगेट PSNR (dB में) तय करें.
इस टारगेट के जितना हो सके उतना करीब पहुंचने के लिए, कंप्रेसर कुछ हिस्से को कई बार एन्कोड करेगा. अगर
-sizeऔर-psnr, दोनों का इस्तेमाल किया जाता है, तो-sizeवैल्यू लागू होगी. -pass int-sizeया-psnrविकल्पों का इस्तेमाल करके, डाइकोटोमी के दौरान इस्तेमाल करने के लिए पास की ज़्यादा से ज़्यादा संख्या सेट करें. ज़्यादा से ज़्यादा वैल्यू10है और डिफ़ॉल्ट तौर पर यह1पर सेट है. अगर विकल्प-sizeया-psnrका इस्तेमाल किया गया था, लेकिन-passको तय नहीं किया गया था. यह एक डिफ़ॉल्ट वैल्यू है '6' में से पास का इस्तेमाल किया जाएगा. अगर-passबताया गया है, लेकिन न तो-sizeऔर न ही-psnrहैं, तो 40dB के टारगेट पीएसएनआर का इस्तेमाल किया जाएगा.-af- अपने-आप फ़िल्टर होने की सुविधा चालू करता है. इस एल्गोरिदम को ऑप्टिमाइज़ करने में अतिरिक्त समय लगेगा फ़िल्टर करने की ताकत का इस्तेमाल किया जाता है, ताकि अच्छी क्वालिटी वाली क्वालिटी मिल सके.
-jpeg_like- आंतरिक पैरामीटर मैपिंग को बदलकर, इसके अनुमानित साइज़ से बेहतर मैच करें JPEG कंप्रेशन. आम तौर पर, यह फ़्लैग JPEG फ़ॉर्मैट में मौजूद इमेज के बराबर साइज़ वाली आउटपुट फ़ाइल जनरेट करेगा. हालांकि, इसमें विज़ुअल में कम विरूपता होगी.
बेहतर विकल्प:
-f int0के बीच, डिब्लॉक करने के फ़िल्टर की ताकत तय करें (कोई फ़िल्टर नहीं) और100(ज़्यादा से ज़्यादा फ़िल्टर करने की सुविधा).0वैल्यू से, फ़िल्टर करने की सुविधा बंद हो जाएगी. ज़्यादा वैल्यू से, लागू की गई फ़िल्टर करने की प्रोसेस ज़्यादा असरदार हो जाएगी को डिकोड करने के बाद. वैल्यू जितनी ज़्यादा होगी, वह तस्वीर उतनी ज़्यादा स्मूद होगी के लिए दिखेगा. सामान्य वैल्यू आम तौर पर20से50की रेंज में होती हैं.-sharpness int- अगर फ़िल्टर किया गया है, तो उसके गहरेपन की जानकारी दें. रेंज
0(सबसे शार्प) से लेकर7(सबसे कम शार्प) तक है. डिफ़ॉल्ट वैल्यू0है. -strong- मज़बूत फ़िल्टर का इस्तेमाल करें (अगर
-fकी वजह से फ़िल्टर किया जा रहा है विकल्प). मज़बूत फ़िल्टर करने की सुविधा डिफ़ॉल्ट रूप से चालू रहती है. -nostrong- अगर
-fके विकल्प की मदद से फ़िल्टर का इस्तेमाल किया जा रहा है, तो ज़्यादा सटीक फ़िल्टर करने की सुविधा बंद करें और इसके बजाय, सामान्य फ़िल्टर का इस्तेमाल करें. -sharp_yuv- RGB->YUV कन्वर्ज़न के लिए, ज़्यादा सटीक और बेहतर क्वालिटी का इस्तेमाल करें. ध्यान दें कि यह प्रोसेस, डिफ़ॉल्ट 'फास्ट' RGB->YUV कन्वर्ज़न से धीमी है.
-sns int- जगह के आस-पास होने वाले शोर के आयाम की जानकारी दें. स्पेशल नॉइज़ शेपिंग
(या संक्षेप में sns) बिल्ट-इन एल्गोरिदम के सामान्य संग्रह को दिखाता है
इसका इस्तेमाल यह तय करने के लिए किया जाता है कि तस्वीर के किस हिस्से में कम बिट इस्तेमाल होने चाहिए,
साथ ही, इन बिट को और कहीं बेहतर तरीके से ट्रांसफ़र किया जा सकता है. इसकी संभावित रेंज,
0(एल्गोरिदम बंद है) से100(ज़्यादा से ज़्यादा असर) तक होती है. डिफ़ॉल्ट मान यह है50. -segments int- sns एल्गोरिदम के सेगमेंटेशन के दौरान इस्तेमाल करने के लिए, सेगमेंट की संख्या बदलें. सेगमेंट
1से4की रेंज में होने चाहिए. डिफ़ॉल्ट वैल्यू4है. तीसरे और उसके बाद के तरीकों पर, इस विकल्प का कोई असर नहीं पड़ता. हालांकि,-low_memoryका इस्तेमाल करने पर, इस विकल्प का असर पड़ता है. -partition_limit int- कुछ मैक्रोब्लॉक के इस्तेमाल किए गए बिट की संख्या को सीमित करके, क्वालिटी को खराब करना.
रेंज
0(कोई गिरावट नहीं, डिफ़ॉल्ट) से100(पूरी गिरावट) तक है. आम तौर पर, बड़ी इमेज के लिए उपयोगी वैल्यू करीब30से70के बीच होती है. VP8 फ़ॉर्मैट में, कंट्रोल पार्टीशन की सीमा 512k होती है. इसका इस्तेमाल, नीचे दी गई जानकारी को सेव करने के लिए किया जाता है: मैक्रोब्लॉक को छोड़ा गया है या नहीं, यह किस सेगमेंट से जुड़ा है, इसे इंट्रा 4x4 या इंट्रा 16x16 मोड के तौर पर कोड किया गया है या नहीं, और आखिर में हर सब-ब्लॉक के लिए इस्तेमाल किए जाने वाले अनुमान मोड. बहुत बड़ी इमेज के लिए, 512k में हर 16x16 मैक्रोब्लॉक के लिए सिर्फ़ कुछ बिट का ही विकल्प होता है. कम से कम हर मैक्रोब्लॉक में 4 बिट होने चाहिए. स्किप, सेगमेंट, और मोड की जानकारी, इन चार बिट में से लगभग सभी का इस्तेमाल कर सकती है. हालांकि, ऐसा होने की संभावना कम है. यह बहुत बड़ी इमेज के लिए समस्या पैदा कर सकती है.partition_limitफ़ैक्टर यह कंट्रोल करता है कि सबसे ज़्यादा बिट-लागत वाले मोड (इंटरा 4x4) का इस्तेमाल कितनी बार किया जाएगा. यह तब काम आता है, जब 512k की सीमा पूरी हो गई हो और यह मैसेज दिख रहा हो: गड़बड़ी का कोड: 6 (PARTITION0_OVERFLOW: Partition #0 is too big to fit 512k). अगर इसका इस्तेमाल किया जा रहा है 512k की कंस्ट्रेंट को पूरा करने के लिए,-partition_limitकाफ़ी नहीं है. इसे हर मैक्रोब्लॉक में हेडर बिट सेव करने के लिए कम सेगमेंट का इस्तेमाल करना. यहां जाएं:-segmentsविकल्प. ध्यान दें कि-mऔर-qविकल्पों का भी एन्कोडर के फ़ैसलों और इस सीमा को हासिल करने की क्षमता पर असर पड़ता है.
लॉग करने के विकल्प
ये विकल्प, आउटपुट के लेवल को कंट्रोल करते हैं:
-v- ज़्यादा जानकारी प्रिंट करें. खास तौर पर, एन्कोड करने में लगने वाला समय.
-print_psnr- औसत पीएसएनआर (सबसे ज़्यादा सिग्नल और शोर का अनुपात) का हिसाब लगाएं और उसकी रिपोर्ट करें.
-print_ssim- औसत एसएसआईएम (संरचनात्मक समानता मेट्रिक, देखें) का पता लगाएं और इसकी रिपोर्ट करें https://en.wikipedia.org/wiki/SSIM के बारे में ज़्यादा जानकारी देखें.
-print_lsim- लोकल समानता वाली मेट्रिक का हिसाब लगाएं और उसकी रिपोर्ट करें (इनमें से सबसे कम गड़बड़ी का कुल योग एक जगह से दूसरी जगह पर बने पिक्सल आस-पास के नतीजे).
-progress- एन्कोडिंग की प्रोग्रेस को प्रतिशत में रिपोर्ट करें.
-quiet- कुछ भी न प्रिंट करें.
-short- जांच के लिए, सिर्फ़ प्रिंट की जाने वाली जानकारी (आउटपुट फ़ाइल का साइज़ और पीएसएनआर) को प्रिंट करें के मकसद से बनाया गया है.
-map int- एन्कोडिंग की जानकारी का अतिरिक्त ASCII-मैप आउटपुट करें. मैप की संभावित वैल्यू
1से6तक हो सकती हैं. इसका मकसद सिर्फ़ डीबग करने में मदद करना है.
ज़्यादा विकल्प
ज़्यादा बेहतर विकल्प ये हैं:
-s width height- यह बताएं कि इनपुट फ़ाइल में असल में रॉ Y'CbCr के सैंपल हैं
4:2:0 लीनियर फ़ॉर्मैट में, ITU-R BT.601 सुझाव के मुताबिक. लुमा प्लेन का साइज़
widthxheightहै. -pre int- प्रोसेस करने से पहले के कुछ चरण बताएं.
2की वैल्यू का इस्तेमाल करने पर, RGBA से YUVA में बदलने के दौरान, क्वालिटी के हिसाब से स्यूडो-रैंडम डिटरिंग ट्रिगर होगी. ऐसा सिर्फ़ लॉस वाले कम्प्रेशन के लिए किया जाएगा. -alpha_filter string- ऐल्फ़ा प्लेन के लिए, फ़िल्टर करने का अनुमानित तरीका बताएं. इनमें से एक
none,fastयाbest, बढ़ते क्रम में और धीरे काम करने लगता है. डिफ़ॉल्ट रूप सेfastहोता है. अंदरूनी तौर पर, अल्फा फ़िल्टरिंग चार संभावित अनुमान (कोई नहीं, हॉरिज़ॉन्टल, वर्टिकल, ग्रेडिएंट) का इस्तेमाल करके की जाती है.bestहर मोड को बारी-बारी से आज़माएगा और वह मोड चुनेगा जो छोटा साइज़.fastमोड बिना किसी प्राथमिकता अनुमान लगाने की कोशिश करेगा सभी मोड की टेस्टिंग कर रहे हैं. -alpha_method int- ऐल्फ़ा कंप्रेशन के लिए इस्तेमाल होने वाला एल्गोरिदम बताएं:
0या1. एल्गोरिदम0का मतलब है कि इमेज को कंप्रेस नहीं किया गया है.1का मतलब है कि इमेज को कंप्रेस करने के लिए, WebP लॉसलेस फ़ॉर्मैट का इस्तेमाल किया गया है. डिफ़ॉल्ट वैल्यू1है. -exact- ट्रांसफ़रेंट एरिया में आरजीबी वैल्यू को बनाए रखें. डिफ़ॉल्ट रूप से यह बंद होता है, ताकि फ़ाइल को आसानी से कम किया जा सके.
-blend_alpha int- यह विकल्प, ऐल्फ़ा चैनल (अगर मौजूद हो) को
पृष्ठभूमि रंग, जिसे हेक्साडेसिमल में 0xrrggbb के रूप में दर्ज किया गया है. इसके बाद, अल्फा चैनल को
255पर रीसेट कर दिया जाता है. -noalpha- इस विकल्प का इस्तेमाल करने पर, अल्फा चैनल को खारिज कर दिया जाएगा.
-hint string- इनपुट इमेज के टाइप के बारे में जानकारी दें. ये वैल्यू हो सकती हैं:
photo,pictureयाgraph. -metadata stringइनपुट से आउटपुट में कॉपी करने के लिए मेटाडेटा की कॉमा-सेपरेटेड लिस्ट, अगर उपस्थित. मान्य वैल्यू:
all,none,exif,icc,xmp. डिफ़ॉल्ट सेटिंग यह हैnone.ध्यान दें, हो सकता है कि हर इनपुट फ़ॉर्मैट में सभी कॉम्बिनेशन काम न करें.
-noasmसभी असेंबली ऑप्टिमाइज़ेशन बंद करें.
बग
कृपया समस्या ट्रैकर में सभी गड़बड़ियों की शिकायत करें: https://issues.webmproject.org
पैच का स्वागत है! शुरू करने के लिए, यह पेज देखें: https://www.webmproject.org/code/contribute/submitting-patches/
उदाहरण
cwebp -q 50 -lossless picture.png -o picture_lossless.webp
cwebp -q 70 picture_with_alpha.png -o picture_with_alpha.webp
cwebp -sns 70 -f 50 -size 60000 picture.png -o picture.webp
cwebp -o picture.webp -- ---picture.png
लेखक
cwebp, libwebp का हिस्सा है और इसे WebP टीम ने लिखा है.
सबसे नया सोर्स ट्री यहां उपलब्ध है
https://chromium.googlesource.com/webm/libwebp/
यह मैन्युअल पृष्ठ Debian प्रोजेक्ट के लिए लिखा गया था (और इसका उपयोग करके अन्य).