WebP में, डेटा को एन्क्रिप्ट (सुरक्षित) करने के तरीके में गड़बड़ी

जेर्की अलकुइजाला, पीएचडी, Google, Inc.
विंसेंट राबोड, पीएचडी, Google, Inc.
पिछली बार इस तारीख को अपडेट किया गया: 01-08-2017

ऐब्स्ट्रैक्ट -- हम WebP एन्कोडर/डीकोडर के संसाधन के इस्तेमाल की तुलना, PNG और लॉसी मोड, दोनों में करते हैं. हम वेब से बेतरतीब ढंग से चुनी गई 12,000 पारदर्शी PNG इमेज और आसान मापों का इस्तेमाल करके परफ़ॉर्मेंस में बदलाव दिखाते हैं. हमने अपने संग्रह में PNG इमेज को कंप्रेस किया है, ताकि WebP इमेज की तुलना साइज़ के लिए ऑप्टिमाइज़ की गई PNG इमेज से की जा सके. हमारे नतीजों में हम दिखाते हैं कि WebP फ़ॉर्मैट, PNG के लिए एक अच्छा रिप्लेसमेंट है. इसे वेब पर साइज़ और प्रोसेसिंग स्पीड, दोनों के हिसाब से इस्तेमाल किया जा सकता है.

शुरुआती जानकारी

WebP, लॉसलेस और ट्रांसलूसेंट इमेज के साथ काम करता है. इस वजह से, यह PNG फ़ॉर्मैट का विकल्प बन जाता है. PNG कंप्रेशन में इस्तेमाल की जाने वाली कई बुनियादी तकनीक, जैसे कि डिक्शनरी कोडिंग, हफ़मैन कोडिंग, और कलर इंडेक्स ट्रांसफ़ॉर्म का इस्तेमाल WebP में भी किया जाता है. इससे सबसे खराब स्थिति में, स्पीड और कंप्रेशन डेंसिटी एक जैसी होती है. साथ ही, कई नई सुविधाएं -- जैसे अलग-अलग कलर चैनलों के लिए अलग-अलग एंट्रॉपी कोड, पीछे की रेफ़रंस दूरियों का 2D इलाका, और हाल ही में इस्तेमाल किए गए कलर को कैश मेमोरी में सेव करने जैसी कई नई सुविधाएं, ज़्यादातर इमेज के साथ कंप्रेस करने की डेंसिटी को बेहतर बनाती हैं.

इस लेख में, हम WebP की परफ़ॉर्मेंस की तुलना उन PNG फ़ॉर्मैट से करते हैं जिन्हें pngcrush और ZopfliPNG का इस्तेमाल करके, बहुत ज़्यादा कंप्रेस किया जाता है. हमने सबसे सही तरीकों का इस्तेमाल करके, वेब इमेज के अपने संग्रह को फिर से शामिल किया है. साथ ही, इस संग्रह से, लॉसलेस और नुकसान पहुंचाने वाले WebP साइज़, दोनों की तुलना की है. रेफ़रंस कॉर्पस के अलावा, हमने स्पीड और मेमोरी के लिए दो बड़े इमेज, एक फ़ोटोग्राफ़िक और दूसरी ग्राफ़िकल को चुना.

यह देखा गया है कि PNG के मुकाबले तेज़ी से डिकोड करने की स्पीड, आज के PNG फ़ॉर्मैट के मुकाबले 23% डेंसर कंप्रेशन से 23% ज़्यादा होती है. हम मानते हैं कि आज के PNG इमेज फ़ॉर्मैट के लिए, WebP एक बेहतर विकल्प है. इसके अलावा, नुकसान न पहुंचाने वाले ऐल्फ़ा वर्शन के साथ इमेज को कंप्रेस करने से, वेबसाइटों को तेज़ी से लोड करने की संभावना बढ़ जाती है.

तरीके

कमांड लाइन टूल

परफ़ॉर्मेंस को मापने के लिए, हम इन कमांड-लाइन टूल का इस्तेमाल करते हैं:

  1. Cwebp और dwebp. ये टूल, libwebp की लाइब्रेरी का हिस्सा हैं. इन्हें हेड से कंपाइल किया गया होता है.

  2. फ़ॉर्मैट बदलें. यह ImageMagick सॉफ़्टवेयर (6.7.7-10 2017-07-21) का एक कमांड-लाइन टूल हिस्सा है.

  3. pngcrush 1.8.12 (30 जुलाई, 2017)

  4. ZopfliPNG (17 जुलाई, 2017)

हम कमांड लाइन टूल का इस्तेमाल, उनसे जुड़े कंट्रोल फ़्लैग के साथ करते हैं. उदाहरण के लिए, अगर हम cwebp -q 1 -m 0 का रेफ़रंस देते हैं, तो इसका मतलब है कि cwebp टूल में -q 1 और -m 0 फ़्लैग इस्तेमाल किए गए हैं.

इमेज कॉरपोरा

तीन कॉर्पस चुने गए:

  1. एक फ़ोटोग्राफ़िक इमेज (पहली इमेज),

  2. ट्रांसलुकेंसी वाली एक ग्राफ़िकल इमेज (इमेज 2) और

  3. वेब संग्रह: रैंडम तरीके से चुनी गई 12,000 PNG इमेज, जिनमें पारदर्शिता होती है या नहीं, और जिन्हें इंटरनेट से क्रॉल किया जाता है. इन PNG इमेज को फ़ॉर्मैट, pngcrush, ZopfliPNG की मदद से ऑप्टिमाइज़ किया जाता है. साथ ही, हर इमेज के सबसे छोटे वर्शन को स्टडी में शामिल किया जाता है.

पहली इमेज. फ़ोटोग्राफ़िक इमेज, 1024 x 752 पिक्सल. आग से सांस लेना "जयपुर महाराजा ब्रास बैंड" चैसेपियर बेल्जियम, ऑथर: लुक वाटूर, फ़ोटो को क्रिएटिव कॉमंस के तहत लाइसेंस मिला हुआ है एट्रिब्यूशन-शेयर अलाइक 3.0 अनपोर्टेड लाइसेंस. लेखक की वेबसाइट यहां है.

दूसरा डायग्राम. ग्राफ़िकल इमेज, 1024 x 752 पिक्सल. Google Chart के टूल से मिली कोलाज इमेज

मौजूदा फ़ॉर्मैट PNG की पूरी क्षमता का आकलन करने के लिए, हमने इन सभी मूल PNG इमेज को कई तरीकों से कंप्रेस कर दिया है:

  1. हर कॉम्पोनेंट के लिए आठ बिट जोड़ें: Input.png -depth 8 tag.png में बदलें

  2. बिना किसी अनुमान वाला ImageMagick(1): कन्वर्ट किए गए Input.png -quality 90 checkout-candidate.png

  3. अडैप्टिव अनुमान लगाने के लिए ImageMagick: इनपुट को फ़ॉर्मैट करें.png -quality 95 screen-candidate.png

  4. Pngcrush(2): pngcrush -brute -rem tEXt -rem tIME -rem iTXt -rem zTXt -rem gAMA -rem cHRM -rem iCCP -rem sRGB -rem alla -rem text di.png-date.png-

  5. ZopfliPNG(3): zopflipng --lossy_transparent input.png checkout out-candidate.png

  6. ZopfliPNG सभी फ़िल्टर के साथ: zopflipng --iterations=500 --filters=01234mepb --lossy_8bit --lossy_transparent इनपुट.png screen-candidate.png

नतीजे

हमने तीन तरीकों से ऑप्टिमाइज़ किए गए PNG इमेज साइज़ के हिसाब से, वेब संग्रह में हर एक इमेज के लिए कंप्रेशन डेंसिटी का आकलन किया:

  1. WebP लॉसलेस (डिफ़ॉल्ट सेटिंग)

  2. सबसे छोटे साइज़ (-m 6 -q 100) के साथ WebP लॉसलेस

  3. ऐल्फ़ा (डिफ़ॉल्ट सेटिंग) के साथ WebP लॉसलेस और WebP लॉसी, दोनों में से सबसे अच्छा.

हमने इन कंप्रेशन फ़ैक्टर को क्रम में लगाया और इमेज 3 में उनका प्लॉट किया.

तीसरी इमेज. 1.0 पर, PNG कंप्रेशन सघनता को रेफ़रंस के तौर पर इस्तेमाल किया जाता है. एक ही इमेज को लॉसलेस और लॉसी, दोनों तरीकों से कंप्रेस किया जाता है. हर इमेज के लिए, कंप्रेस किए गए PNG के साइज़ के अनुपात की गणना की जाती है और साइज़ अनुपात को क्रम से लगाया जाता है. साथ ही, लॉसलेस और लॉसी, कंप्रेशन, दोनों के लिए दिखाया जाता है. लॉसी कंप्रेशन कर्व के लिए, लॉसलेस कंप्रेशन को उन मामलों में चुना जाता है जहां यह छोटी WebP इमेज बनाता है.

WebP, libpng की क्वालिटी (कन्वर्ज़न) के लिए PNG कंप्रेशन डेंसिटी से बेहतर है. साथ ही, ZopfliPNG (टेबल 1) के साथ, एन्कोडिंग (टेबल 2) और डिकोडिंग (टेबल 3) स्पीड की तुलना, PNG फ़ॉर्मैट से की जा सकती है.

टेबल 1. अलग-अलग कंप्रेशन तरीकों का इस्तेमाल करके, तीन कॉर्पस के लिए हर पिक्सल का औसत बिट.

इमेज सेट क्वालिटी 95 में बदलें ZopfliPNG WebP लॉसलेस -q 0 -m 1 WebP लॉसलेस (डिफ़ॉल्ट सेटिंग) WebP लॉसलेस -m 6 -q 100 WebP फ़ॉर्मैट में, ऐल्फ़ा के साथ खराब क्वालिटी
फ़ोटो 12.3 12.2 10.5 10.1 9.83 0.81
ग्राफ़िक 1.36 1.05 0.88 0.71 0.70 0.51
वेब 6.85 5.05 4.42 4.04 3.96 1.92

टेबल 2. कंप्रेशन कॉर्पस और अलग-अलग कंप्रेस करने के तरीकों के लिए, कोड में बदलने में लगने वाला औसत समय.

इमेज सेट क्वालिटी 95 में बदलें ZopfliPNG WebP लॉसलेस -q 0 -m 1 WebP लॉसलेस (डिफ़ॉल्ट सेटिंग) WebP लॉसलेस -m 6 -q 100 WebP फ़ॉर्मैट में, ऐल्फ़ा के साथ खराब क्वालिटी
फ़ोटो 0.500 सेकंड 8.7 सेकंड 0.293 सेकंड 0.780 सेकंड 8.440 सेकंड 0.111 सेकंड
ग्राफ़िक 0.179 सेकंड 14.0 सेकंड 0.065 सेकंड 0.140 सेकंड 3.510 सेकंड 0.184 सेकंड
वेब 0.040 सेकंड 1.55 सेकंड 0.017 सेकंड 0.072 सेकंड 2.454 सेकंड 0.020 सेकंड

तीसरी टेबल. अलग-अलग तरीकों और सेटिंग से कंप्रेस की गई इमेज फ़ाइलों के लिए, तीन कॉर्पस का औसत डिकोडिंग समय.

इमेज सेट क्वालिटी 95 में बदलें ZopfliPNG WebP लॉसलेस -q 0 -m 1 WebP लॉसलेस (डिफ़ॉल्ट सेटिंग) WebP लॉसलेस -m 6 -q 100 WebP फ़ॉर्मैट में, ऐल्फ़ा के साथ खराब क्वालिटी
फ़ोटो 0.027 सेकंड 0.026 सेकंड 0.027 सेकंड 0.026 सेकंड 0.027 0.012 सेकंड
ग्राफ़िक्स 0.049 सेकंड 0.015 सेकंड 0.005 सेकंड 0.005 सेकंड 0.003 0.010 सेकंड
वेब 0.007 सेकंड 0.005 सेकंड 0.003 सेकंड 0.003 सेकंड 0.003 0.003 सेकंड

मेमोरी प्रोफ़ाइलिंग

मेमोरी प्रोफ़ाइलिंग के लिए, हमने /usr/bin/time -v में बताई गई ज़्यादा से ज़्यादा रेज़िडेंट सेट साइज़ को रिकॉर्ड किया है

वेब संग्रह के लिए, सबसे बड़ी इमेज का साइज़, मेमोरी के ज़्यादा से ज़्यादा इस्तेमाल के बारे में बताता है. मेमोरी के मेज़रमेंट को बेहतर तरीके से परिभाषित करने के लिए, हम मेमोरी के इस्तेमाल के बारे में खास जानकारी देने के लिए सिंगल फ़ोटोग्राफ़ इमेज (इमेज 1) का इस्तेमाल करते हैं. ग्राफ़िकल इमेज भी मिलते-जुलते नतीजे देती है.

हमने libpng और ZopfliPNG के लिए 10 से 19 MiB मेट्रिक और -q 0 -m 1 सेटिंग -q 0 -m 1 और -q 95 (डिफ़ॉल्ट वैल्यू -m) पर, 25 MiB और WebP लॉसलेस एन्कोडिंग के लिए 32 MiB का आकलन किया है.

डिकोड करने के प्रयोग में, '1x1 का साइज़ बदलें' में libpng और ZopfliPNG जनरेट की गई PNG फ़ाइलों के लिए 10 MiB का इस्तेमाल किया जाता है. Cwebp का इस्तेमाल करके WebP लॉसलेस डिकोडिंग को 7 एमबी और 3 एमबी तक लॉसी डिकोडिंग का इस्तेमाल करना.

मीटिंग में सामने आए नतीजे

हमने दिखाया है कि एन्कोडिंग और डिकोडिंग, दोनों स्पीड, PNG के डोमेन के एक ही डोमेन में होती हैं. एन्कोडिंग फ़ेज़ के दौरान मेमोरी के इस्तेमाल में बढ़ोतरी होती है, लेकिन डिकोड करने का चरण, cwebp के व्यवहार की तुलना ImageMagick के कन्वर्ज़न से की जाने वाली कार्रवाई में अच्छा होता है.

99% से ज़्यादा वेब इमेज के लिए कंप्रेस करना बेहतर होता है. इसका मतलब है कि इमेज PNG से WebP में बदली जा सकती हैं.

जब WebP को डिफ़ॉल्ट सेटिंग के साथ चलाया जाता है, तो यह libpng के मुकाबले 42% बेहतर और ZopfliPNG से 23% बेहतर कंप्रेस करता है. इससे पता चलता है कि WebP, ऐसी वेबसाइटों के कॉन्टेंट की स्पीड बढ़ाने का वादा कर रहा है जो बहुत ज़्यादा लोड होती हैं.

References

  1. ImageMagick

  2. Pngक्रश

  3. ZopfliPNG

यहां दी गई अलग-अलग स्टडी, Google की ओर से प्रायोजित नहीं की गई हैं. साथ ही, यह ज़रूरी नहीं है कि Google का कॉन्टेंट सही हो.

  1. Yoav Weiss का ब्लॉग