PicScrub logoPicScrub
फ़ॉर्मैट पर वापस जाएँ

WebP फ़ॉर्मैट

Google का आधुनिक इमेज फ़ॉर्मैट

RIFF कंटेनर

Google ने WebP के लिए कोई नया कंटेनर नहीं बनाया। उन्होंने RIFF ही चुना, वही फ़ॉर्मैट जो नब्बे के दशक की शुरुआत से WAV ऑडियो और AVI वीडियो ढो रहा है। अगर आपने कभी WAV फ़ाइल पढ़ी है, तो कंटेनर के स्तर पर WebP आपको पहले से आता है।

यह फ़ॉर्मैट एक-दूसरे के अंदर बैठे chunk इस्तेमाल करता है, जिनके आइडेंटिफ़ायर 4 अक्षर के होते हैं (इन्हें FourCC कोड कहते हैं)। डिज़ाइन सीधा और मज़बूत है, और वक़्त की कसौटी पर खरा उतरा है।

WebP फ़ाइल का स्ट्रक्चर (RIFF कंटेनर)

RIFF
Size
WEBP
VP8X
EXIF/XMP
VP8/VP8L
RIFF
4 बाइट
कंटेनर का सिग्नेचर
Size
4 बाइट
फ़ाइल का साइज़ - 8
WEBP
4 बाइट
फ़ॉर्मैट का आइडेंटिफ़ायर
VP8X
18 बाइट
अतिरिक्त फ़ीचर के फ़्लैग
EXIF/XMP
100 बाइट
मेटाडेटा वाले chunk
VP8/VP8L
लंबाई बदलती रहती है
इमेज डेटा

WebP हेडर

RIFF सिग्नेचर
फ़ाइल का साइज़ - 8
WEBP आइडेंटिफ़ायर
VP8X chunk का टाइप
VP8X का साइज़ (10)
VP8X फ़्लैग
कैनवस का साइज़
OffsetHexASCII
0000
52494646241A00005745425056503858
RIFF$...WEBPVP8X
0010
0A00000010000000FF0000FF00000000
..............

RIFF chunk का स्ट्रक्चर

FourCCSizeData
4 बाइट4 बाइट (LE)बदलती रहती है

ध्यान दें: ज़रूरत पड़ने पर chunk के डेटा में एक null बाइट जोड़कर उसकी लंबाई सम कर दी जाती है।

अहम offset

  • • sub-chunk की शुरुआत: 12 बाइट (RIFF + size + WEBP के बाद)
  • • chunk की हेडर: 8 बाइट (4 बाइट FourCC + 4 बाइट size)
  • • size फ़ील्ड का offset: chunk की शुरुआत से +4 (little-endian)

इमेज वाले chunk

WebP असल में एक में तीन फ़ॉर्मैट है: lossy (VP8), lossless (VP8L) और extended (VP8X)। chunk का टाइप बता देता है कि कंप्रेशन का कौन सा तरीका इस्तेमाल हुआ है।

VP8:lossy कंप्रेशन

कंप्रेशन के लिए VP8 वीडियो कोडेक इस्तेमाल करता है। क्वालिटी और साइज़ का अनुपात JPEG जैसा ही रहता है। साधारण WebP फ़ाइलों में सिर्फ़ यही chunk होता है।

VP8L:lossless कंप्रेशन

प्रिडिक्शन, कलर ट्रांसफ़ॉर्म और एंट्रॉपी कोडिंग के साथ बिना क्वालिटी घटाए कंप्रेशन। आम तौर पर PNG से 25-34% छोटा।

VP8X:एक्सटेंडेड फ़ॉर्मैट

बताता है कि फ़ाइल में कौन-कौन से अतिरिक्त फ़ीचर मौजूद हैं: एनिमेशन, अल्फ़ा चैनल, ICC प्रोफ़ाइल, EXIF या XMP। इनमें से कुछ भी हो, तो यह chunk ज़रूरी हो जाता है।

ALPH:अल्फ़ा चैनल

अल्फ़ा चैनल का अलग डेटा। इसे रंग के डेटा से अलग, lossless या lossy तरीके से कंप्रेस किया जा सकता है।

ANIM/ANMF:एनिमेशन

ANIM में एनिमेशन के कुल पैरामीटर होते हैं। ANMF chunk में एनिमेशन के अलग-अलग फ़्रेम और उनकी टाइमिंग की जानकारी रहती है।

मेटाडेटा वाले chunk

साधारण WebP फ़ाइलों में सिर्फ़ इमेज डेटा होता है, पर एक्सटेंडेड WebP फ़ाइलें मेटाडेटा भी ढो सकती हैं। अच्छी बात यह है कि ये chunk इमेज डेटा से बिल्कुल अलग रहते हैं, इसलिए इन्हें पहचानना और हटाना आसान है।

EXIF:EXIF मेटाडेटा

इसमें EXIF डेटा उसी फ़ॉर्मैट में रहता है जिसमें JPEG में होता है (कच्चा TIFF स्ट्रक्चर)। इसमें कैमरे की जानकारी, GPS कोऑर्डिनेट, तारीख़ और समय, और थंबनेल शामिल हैं। प्राइवेसी की सबसे बड़ी चिंता।

XMP:XMP मेटाडेटा

XML पर बना मेटाडेटा। इसमें EXIF का डेटा दोहराया जा सकता है, साथ ही एडिटिंग हिस्ट्री, सॉफ़्टवेयर की जानकारी और अपने बनाए फ़ील्ड भी।

ICCP:ICC कलर प्रोफ़ाइल

कलर मैनेजमेंट के लिए ICC कलर प्रोफ़ाइल। रंग सही दिखें, इसलिए PicScrub इसे डिफ़ॉल्ट रूप से रहने देता है।

VP8X फ़्लैग

VP8X chunk एक तरह की विषय-सूची की तरह काम करता है, जो डिकोडर को बताता है कि फ़ाइल में क्या-क्या मिलेगा। जब हम मेटाडेटा वाले chunk हटाते हैं, तो हमें ये फ़्लैग भी अपडेट करने पड़ते हैं, वरना डिकोडर ऐसा डेटा ढूँढता रह जाएगा जो है ही नहीं।

फ़्लैग बिट

Bit 0रिज़र्व (0 ही होना चाहिए)
Bit 1एनिमेशन का फ़्लैग
Bit 2XMP मेटाडेटा मौजूद है
Bit 3EXIF मेटाडेटा मौजूद है
Bit 4अल्फ़ा चैनल मौजूद है
Bit 5ICC प्रोफ़ाइल मौजूद है

फ़्लैग क्यों मायने रखते हैं

जब PicScrub, EXIF/XMP chunk हटाता है, तो उसे VP8X फ़्लैग भी अपडेट करने पड़ते हैं ताकि उनकी गैरमौजूदगी दर्ज हो जाए। वरना डिकोडर ऐसा डेटा माँग बैठेंगे जो है ही नहीं।

PicScrub, WebP को कैसे प्रोसेस करता है

1

RIFF हेडर जाँचना

RIFF....WEBP सिग्नेचर देखना

2

chunk पढ़ना

सारे RIFF chunk एक-एक करके पढ़ना, FourCC और साइज़ निकालना

3

मेटाडेटा वाले chunk हटाना

आउटपुट लिखते समय EXIF और XMP chunk छोड़ देना

4

VP8X फ़्लैग अपडेट करना

VP8X chunk में EXIF/XMP वाले फ़्लैग बिट साफ़ करना

5

फ़ाइल का साइज़ दोबारा निकालना

RIFF हेडर में फ़ाइल का नया कुल साइज़ लिखना

जो बचा रहता है

  • • VP8/VP8L इमेज डेटा
  • • ALPH अल्फ़ा चैनल
  • • ANIM/ANMF एनिमेशन का डेटा
  • • ICCP कलर प्रोफ़ाइल (आपकी मर्ज़ी)

जो हट जाता है

  • • EXIF मेटाडेटा
  • • XMP मेटाडेटा

साधारण बनाम एक्सटेंडेड WebP

अगर किसी WebP फ़ाइल में VP8X chunk नहीं है, तो वह "साधारण" WebP है: बस एक VP8 या VP8L chunk के चारों ओर लिपटा RIFF रैपर। साधारण WebP फ़ाइलों में मेटाडेटा हो ही नहीं सकता, इसलिए प्राइवेसी की परवाह करने वालों के लिए ये सबसे अच्छी हैं।

साधारण WebP

इसमें सिर्फ़ VP8 या VP8L chunk होता है। मेटाडेटा मुमकिन ही नहीं।

RIFF + WEBP + VP8/VP8L

एक्सटेंडेड WebP

इसमें VP8X chunk होता है, जो मेटाडेटा, अल्फ़ा और एनिमेशन की सुविधा देता है।

RIFF + WEBP + VP8X + [ICCP] + [ANIM] + [EXIF] + [XMP] + VP8/VP8L