PicScrub logoPicScrub
العودة إلى الصيغ

صيغة WebP

صيغة الصور الحديثة من Google

حاوية RIFF

لم تخترع Google حاوية جديدة لـ WebP، بل اختارت RIFF، وهي الصيغة نفسها التي تحمل صوت WAV وفيديو AVI منذ مطلع التسعينيات. فإن سبق أن حللت ملف WAV، فأنت تعرف أصلًا كيف تعمل WebP على مستوى الحاوية.

تستخدم الصيغة كتلًا متداخلة بمعرّفات من أربعة أحرف (تُسمى رموز FourCC). وهو تصميم بسيط ومتين صمد أمام اختبار الزمن.

بنية ملف WebP (حاوية RIFF)

RIFF
Size
WEBP
VP8X
EXIF/XMP
VP8/VP8L
RIFF
4 بايت
توقيع الحاوية
Size
4 بايت
حجم الملف - 8
WEBP
4 بايت
معرّف الصيغة
VP8X
18 بايت
رايات الخصائص الموسّعة
EXIF/XMP
100 بايت
كتل البيانات الوصفية
VP8/VP8L
طول متغيّر
بيانات الصورة

ترويسة WebP

توقيع RIFF
حجم الملف - 8
معرّف WEBP
نوع كتلة VP8X
حجم VP8X (10)
رايات VP8X
حجم اللوحة
OffsetHexASCII
0000
52494646241A00005745425056503858
RIFF$...WEBPVP8X
0010
0A00000010000000FF0000FF00000000
..............

بنية كتلة RIFF

FourCCالحجمالبيانات
4 بايت4 بايت (LE)متغيّر

ملاحظة: تُحشى بيانات الكتلة ببايت صفري عند الحاجة كي يصبح طولها زوجيًا.

إزاحات مهمة

  • • بداية الكتل الفرعية: 12 بايت (بعد RIFF + الحجم + WEBP)
  • • ترويسة الكتلة: 8 بايتات (4 بايت FourCC + 4 بايت للحجم)
  • • إزاحة حقل الحجم: 4+ من بداية الكتلة (little-endian)

كتل الصورة

WebP في الحقيقة ثلاث صيغ في واحدة: مع فقدان (VP8)، وبلا فقدان (VP8L)، وموسّعة (VP8X). ونوع الكتلة هو ما يخبرك بطريقة الضغط المستخدمة.

VP8:ضغط مع فقدان

تستخدم مرمّز الفيديو VP8 في الضغط. ونسبة الجودة إلى الحجم فيها قريبة من JPEG. وملفات WebP البسيطة لا تحتوي إلا على هذه الكتلة.

VP8L:ضغط بلا فقدان

ضغط بلا فقدان يعتمد التنبؤ وتحويل الألوان والترميز الإنتروبي. وينتج ملفات أصغر من PNG بنسبة 25 إلى 34% عادة.

VP8X:الصيغة الموسّعة

تشير إلى وجود خصائص اختيارية: الحركة أو قناة الشفافية أو ملف ICC أو EXIF أو XMP. وهي إلزامية عند وجود أي من هذه الخصائص.

ALPH:قناة الشفافية

بيانات قناة شفافية منفصلة. ويمكن ضغطها بلا فقدان أو مع فقدان، باستقلال عن بيانات الألوان.

ANIM/ANMF:الحركة

تحمل ANIM معاملات الحركة العامة، بينما تحمل كتل ANMF إطارات الحركة المفردة مع معلومات توقيتها.

كتل البيانات الوصفية

على خلاف ملفات WebP البسيطة التي لا تحمل سوى بيانات الصورة، تستطيع ملفات WebP الموسّعة أن تحمل بيانات وصفية. والخبر الجيد أن هذه الكتل منفصلة تمامًا عن بيانات الصورة، فيسهل تمييزها وإزالتها.

EXIF:بيانات EXIF الوصفية

تحتوي على بيانات EXIF بالصيغة نفسها المستخدمة في JPEG (بنية TIFF خام). وتشمل معلومات الكاميرا وإحداثيات GPS والطوابع الزمنية والصور المصغّرة. وهي أكبر مصدر قلق على الخصوصية.

XMP:بيانات XMP الوصفية

بيانات وصفية قائمة على XML. وقد تكرر بيانات EXIF وتضيف إليها سجل التحرير ومعلومات البرنامج وحقولًا مخصصة.

ICCP:ملف ألوان ICC

ملف ألوان ICC لإدارة الألوان. ويبقي عليه PicScrub افتراضيًا حفاظًا على دقة الألوان.

رايات VP8X

تعمل كتلة VP8X عمل جدول المحتويات، إذ تخبر أدوات فك الترميز بما تتوقع وجوده في الملف. ولذلك حين نزيل كتل البيانات الوصفية، علينا تحديث هذه الرايات أيضًا، وإلا بحثت أداة فك الترميز عن بيانات لم تعد موجودة.

بتات الرايات

البت 0محجوز (يجب أن يكون 0)
البت 1راية الحركة
البت 2وجود بيانات XMP الوصفية
البت 3وجود بيانات EXIF الوصفية
البت 4وجود قناة شفافية
البت 5وجود ملف ICC

لماذا تهم هذه الرايات

حين يزيل PicScrub كتل EXIF/XMP، عليه أن يحدّث رايات VP8X كي تعكس غيابها. وإلا فقد تتوقع أدوات فك الترميز بيانات لم تعد موجودة.

كيف يعالج PicScrub ملفات WebP

1

التحقق من ترويسة RIFF

البحث عن توقيع RIFF....WEBP

2

تحليل الكتل

المرور على كل كتل RIFF وقراءة رمز FourCC والحجم

3

إزالة كتل البيانات الوصفية

تخطي كتلتَي EXIF وXMP عند كتابة الناتج

4

تحديث رايات VP8X

تصفير بتات رايتَي EXIF/XMP في كتلة VP8X

5

إعادة حساب حجم الملف

تحديث ترويسة RIFF بالحجم الكلي الجديد للملف

ما يبقى

  • • بيانات صورة VP8/VP8L
  • • قناة الشفافية ALPH
  • • بيانات الحركة ANIM/ANMF
  • • ملف الألوان ICCP (اختياري)

ما يُزال

  • • بيانات EXIF الوصفية
  • • بيانات XMP الوصفية

WebP البسيطة مقابل الموسّعة

إن خلا ملف WebP من كتلة VP8X، فهو ملف "بسيط": مجرد غلاف RIFF حول كتلة VP8 أو VP8L واحدة. ولا يمكن أن تحمل ملفات WebP البسيطة أي بيانات وصفية، فهي مثالية إن كنت حريصًا على خصوصيتك.

WebP البسيطة

لا تحتوي إلا على كتلة VP8 أو VP8L. ولا مجال فيها لأي بيانات وصفية.

RIFF + WEBP + VP8/VP8L

WebP الموسّعة

فيها كتلة VP8X تتيح البيانات الوصفية والشفافية والحركة.

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