محوّل Base64 إلى WebP

احفظ صور WebP المرمّزة بـ Base64 كملفات، أو حوّل بيانات PNG وJPEG بترميز Base64 إلى WebP، وهي صيغة حديثة تكون عادةً أصغر حجمًا بجودة بصرية مماثلة.

تعمل بالكامل داخل متصفحك، ولا يُرفع أي شيء.

طريقة الاستخدام

  1. الصق سلسلة Base64 أو عنوان data:image/webp;base64. وتعمل أي صيغة صور أخرى أيضًا.
  2. راجع المعاينة والصيغة المكتشفة والحجم بعد فك الترميز.
  3. اترك WebP في «تنزيل بصيغة» للتحويل، أو اختر «الملف الأصلي» لحفظ البايتات كما نتجت عن فك الترميز تمامًا.
  4. نزّل ملف .webp وقارن حجمه بحجم المصدر.

التعرّف على بيانات WebP

تُخزَّن صور WebP في حاوية RIFF، وهي الغلاف نفسه الذي تستخدمه ملفات الصوت WAV. ويبدأ الملف بالنص RIFF بترميز ASCII، لذا يبدأ ترميزه بـ Base64 بـ UklGR؛ وبعد بضعة بايتات تؤكد العلامة WEBP أن الحاوية تضم صورة لا صوتًا. وفي الداخل، تكون الصورة إما مضغوطة مع فقدان (VP8)، أو بلا فقدان (VP8L)، أو ملفًا موسّعًا (VP8X) يضيف الشفافية أو الحركة أو البيانات الوصفية. ونوع MIME هو image/webp.

لماذا التحويل إلى WebP

وفقًا لقياسات Google، تكون ملفات WebP المضغوطة مع فقدان أصغر بنحو 25 إلى 34 بالمئة من ملفات JPEG ذات الجودة المماثلة، وتكون WebP بلا فقدان أصغر بنحو 26 بالمئة من PNG. وعلى عكس JPEG، تحتفظ WebP بقناة ألفا، لذا تتحول الشعارات والملصقات الشفافة بشكل نظيف. وتعرض جميع المتصفحات الرئيسية الحالية صيغة WebP.

لصغر حجم الملفات أهمية مضاعفة عند تضمين الصور: فالصورة الأخف تعني أيضًا سلسلة Base64 أقصر في HTML أو CSS أو JSON. وبعد التحويل، يمكنك ترميز الملف الجديد مرة أخرى باستخدام تحويل WebP إلى Base64.

لكن النتيجة ليست أصغر دائمًا. فالأيقونات الصغيرة جدًا، والصور الفوتوغرافية المضغوطة جيدًا أصلًا، والرسومات المسطحة قليلة الألوان، قد تخرج أحيانًا أكبر حجمًا، وفي هذه الحالة تكون PNG أو JPG خيارًا أفضل. والتحويل هنا أيضًا طريقة سريعة لاختبار مقدار ما ستكسبه صورة معينة قبل تغيير مسار البناء لديك: الصق صورة PNG أو JPEG بترميز Base64، ونزّل ملف WebP، وقارن بين الحجمين.

التحويل باستخدام Pillow

للمهام الدفعية على الخادم، لا يتطلب التحويل نفسه سوى بضعة أسطر من Python باستخدام مكتبة Pillow:

import base64, io
from PIL import Image

img = Image.open(io.BytesIO(base64.b64decode(b64_string)))
img.save('output.webp', 'WEBP', quality=80)

الأسئلة الشائعة

هل تحتفظ WebP بالشفافية؟

نعم. تدعم WebP قناة ألفا كاملة في وضعي الضغط مع الفقدان وبلا فقدان، لذا تبقى المناطق الشفافة شفافة بعد التحويل.

هل يمكنني الاحتفاظ بصورة WebP متحركة؟

نزّلها باختيار «الملف الأصلي» للاحتفاظ بكل الإطارات. فالتحويل يمر عبر عنصر canvas، الذي لا يلتقط إلا إطارًا ثابتًا واحدًا.

هل تكون مخرجات WebP دائمًا أصغر من المدخلات؟

لا. تصغر الصور الفوتوغرافية الكبيرة ولقطات الشاشة عادةً، لكن الصور الصغيرة أو المحسّنة بشدة قد تكبر. قارن الحجم بعد فك الترميز الذي تعرضه الأداة بحجم الملف الذي نزّلته.

بعض البرامج لا تفتح ملف WebP الخاص بي. ماذا أفعل؟

قد تفتقر عارضات الصور القديمة والبرامج المكتبية إلى دعم WebP. الصق سلسلة Base64 نفسها ونزّلها بصيغة PNG أو JPG بدلًا من ذلك.