متوفر أيضًا بلغات أخرى: English · Español · Português · Français
دعم صيغ الصور في متصفحك
اختبار حيّ لأي صيغ الصور يستطيع متصفحك عرضها، وأيها يستطيع كتابتها فعلًا، وهما ليستا القائمة نفسها.
لماذا لا يجيب جدول التوافق عن هذا
جداول التوافق تخبرك بما تدعمه نسخة من متصفح وفق قاعدة بيانات. وهذا مفيد، لكنه ليس السؤال نفسه: ما الذي يفعله المتصفح الذي أمامك؟ فمرمّزات الصور شأن يخص نظام التشغيل جزئيًا. فك ترميز HEIC في سفاري يعتمد على ما يوفره macOS أو iOS، وصيغة AVIF وصلت في أوقات مختلفة إلى منصات مختلفة ضمن نسخة المتصفح الواحدة.
الجدول أعلاه ليس استعلامًا من قائمة. إنه يسلّم متصفحك صورة حقيقية من بكسلين في كل صيغة ويرقب ما يحدث، ثم يطلب من لوحة الرسم أن تكتب كل صيغة ويفحص ما يعود. والإجابتان تخصان هذا المتصفح، على هذا الجهاز، اليوم.
السؤالان مختلفان اختلافًا حقيقيًا، وهذا بالضبط ما تغفله أغلب الجداول.
كيف تقرأ الجدول
- انظر إلى العمود الأول لدعم العرض. هذا ما يقصده الناس عادةً بدعم الصيغة: هل يستطيع المتصفح إظهار صورة من هذا النوع؟ ويُقاس بفكّ ترميز عيّنة حقيقية، لا بمراجعة رقم نسخة.
- وانظر إلى العمود الثاني لدعم الإنشاء. أي هل تستطيع لوحة الرسم كتابة الصيغة، وعليه يقوم كل محوّل أو أداة التقاط أو محرّر صور يعمل داخل المتصفح. وهي قائمة أقصر في الغالب.
- وتنبّه إلى الصيغ التي تظهر في عمود دون الآخر. هذه هي التي توقع الناس: تُقرأ في كل مكان، ولا تُكتب في أي مكان.
المزلق في العمود الثاني
سؤال لوحة الرسم عمّا إذا كانت تستطيع كتابة صيغة أمرٌ غير ممكن، إذ لا توجد دالة لذلك. ما يمكنك فعله أن تطلب منها كتابة صيغة وترى ما تحصل عليه؛ والمواصفة صريحة فيما يحدث حين يكون الجواب لا: نوع المخرَج الافتراضي هو image/png، والنوع نفسه يُستعمل حين لا يكون المطلوب مدعومًا.
فالنداء الذي يطلب AVIF في متصفح بلا ترميز AVIF لا يرمي خطأً، ولا يعيد null، ولا يرفع أي راية: بل يعيد صورة PNG. ولا شيء في النتيجة يدل على وقوع الاستبدال سوى نوع الكائن نفسه، ولهذا فالسبيل النزيه الوحيد لبناء هذا العمود أن ترمّز شيئًا ثم تقرأ ذلك النوع.
وليست هذه طرفة. بل هي سبب أن محوّلًا يعمل في المتصفح قد يسلّمك ملفًا اسمه photo.avif وهو في الحقيقة PNG: أكبر من الأصل، وبامتداد خاطئ، وبلا خطأ في أي موضع. فإن كنت تكتب شفرة تنادي toBlob بشيء غير image/png، فقارن النوع الذي تلقّيته بالنوع الذي طلبته. سطر واحد، وهو الفرق بين محوّل يعمل وآخر يكذب في صمت.
أما الاتجاه المعاكس فلا يعاني هذا. فكّ الترميز يفشل بصوت عالٍ: أعطِ المتصفح بايتات لا يعرف قراءتها فيُرفض فكّ الترميز. وهذا التفاوت — اتجاه يمكن كشفه واتجاه صامت — هو كل سبب وجود عمودين في هذه الصفحة بدل عمود واحد.
حدود معلنة
تُختبر ثماني صيغ، ولا يُسأل عن الإنشاء إلا في أربع: PNG وJPEG وWebP وAVIF. فلوحة الرسم لم تكتب يومًا GIF ولا BMP ولا TIFF ولا ICO، وسبرها يعني الإبلاغ عن الرجوع إلى PNG وإظهار المتصفح ناقصًا لأنه لا يفعل ما لم يفعله متصفح قط. وهذه الأربع تصرّح بذلك في العمود الثاني بدل عرض نتيجة سلبية زائفة.
والعيّنات بكسلان في بكسلين، وهي ملفات حقيقية أنتجها مرمّز فعلي، ثم أُعيدت قراءتها للتأكد من أنها الصيغة والحجم اللذين تدّعيهما. وهذا أهم مما يبدو: فقاعدة base64 مكتوبة يدويًا وفيها خلل خفيّ تجعل المتصفح يبدو عاجزًا عن صيغة يدعمها تمامًا. أما عيّنة ICO فستة عشر بكسلًا، لأن المرمّز المستعمل ينتج دون ذلك الحجم قطعة لا تصلح، وهو ما التقطه الفحص بدل أن يمرّره.
وجواب «لا» في فكّ الترميز قد يعني أن المتصفح يفتقر إلى المرمّز، أو أنه رفض هذا الملف بعينه، والاختبار لا يميّز بينهما من الخارج. ولصورة صحيحة من بكسلين يترجّح الاحتمال الأول ترجيحًا كبيرًا، لكنه سبرٌ لا برهان.
ولا ترد HEIC ولا JPEG XL في الجدول. فالمرمّز المتاح حين وُلّدت هذه العيّنات لم يكن ينتج أيًّا منهما، ونشرُ عيّنة مركّبة يدويًا كان سيفرغ أي نتيجة سلبية من معناها. وصفٌّ غائب أنزه من صفٍّ لا يُوثق به.
لماذا هي مجانية؟
كل ما هنا يجري في متصفحك: بضعة كيلوبايتات من صور العيّنات، ولوحة رسم من بكسلين، وبلا أي طلب شبكة بعد تحميل الصفحة. فلا كلفة خادم تُستردّ ولا حساب يُنشأ.
ولا يُرفع شيء لأنه لا شيء يُرفع أصلًا. فالاختبار لا يقرأ أي ملف من ملفاتك، بل يستعمل عيّناته ولوحته.