هل تُرفع صورتي إلى أي مكان؟
لا. يقرأ متصفحك أنت الملف ويرمّزه على جهازك أنت، بدالّتين يملكهما المتصفح أصلاً. لا تملك هذه الأداة أي وظيفة شبكية على الإطلاق — فهي لا تجلب شيئاً ولا ترسل شيئاً — وContent-Security-Policy الخاصة بالصفحة تُسمّي كل عنوان يجوز لها الاتصال به، وليس واحد منها لنا.
ما الـ Data URI؟
طريقة في كتابة ملف كامل في الموضع الذي يوضع فيه عنوان الويب عادةً. فبدل url("logo.png")، التي تقول للمتصفح اذهب وأحضِر شيئاً، تكتب url("data:image/png;base64,iVBORw0...")، وهي تحوي الصورة نفسها. فيفكّ المتصفح ترميزها في مكانها. والأثر العملي طلبٌ أقل: تصل الصورة مع ورقة الأنماط أو الصفحة بدل أن تصل بعدها.
لماذا لم يُرمَّز ملف SVG بـ base64؟
لأن base64 هو الترميز الخطأ له. فملف SVG نصّ، والعنوان يستطيع حمل النصّ أصلاً — ولا يحتاج إلى الهروب إلا حفنة من المحارف. وترميزُ تلك بالنسبة المئوية وتركُ ما عداها ينتج URI أقصر بنحو الخُمس من base64 للملف نفسه، وتظل تستطيع قراءتها في ورقة أنماطك: أسماء العناصر والألوان وviewBox كلها باقية للتعديل. وثمّة مربع اختيار لفرض base64 لسلسلة الأدوات النادرة التي تصرّ عليه.
كم يكبّر base64 صورتي؟
الثلث تقريباً. ثلاث بايتات من الملف تصير أربعة محارف من base64، أي 33% قبل data:image/png;base64, التي في المقدمة. وهذا هو الحدّ الأدنى، ولا مفرّ منه: فهو ثمن كتابة بايتات كيفما كانت بالمحارف التي يسمح بها العنوان لا غير. وهو أيضاً سبب عرض الصفحة عددَ المحارف بجانب حجم الملف بدل أن تتركك تكتشفه حين تُنشَر ورقة الأنماط.
متى يكون تضمين صورة فكرة صائبة فعلاً؟
حين تكون صغيرة والحاجة إليها فورية. فأيقونة بحجم 2 KB في ورقة أنماط تحمّلها كل صفحة مكسبٌ بيّن: رحلة ذهاب وإياب أقل، والصورة حاضرة لحظةَ حضور الـ CSS. وبعد نحو 10 KB ينقلب الميزان. فالصورة المضمَّنة لم تعد ملفاً منفصلاً، فلا يمكن تخبئتها وحدها، ولا جلبها بالتوازي مع غيرها، وتُنزَّل كاملة من جديد كلما تغيّر الملف الذي حولها — وصورة فوتوغرافية بحجم 200 KB في ورقة أنماط هي 200 KB مضافة إلى المسار الحرج لكل صفحة في الموقع. وتقول لك الصفحة على أي جانب من ذلك الخط تقع كل نتيجة.
هل يُلغي gzip زيادةَ base64؟
أقلّ مما يتوقّع الناس. فـ base64 لملف مضغوط أصلاً — وهو حال PNG وJPEG وWebP جميعاً — ينضغط ضغطاً رديئاً، لأنه لم يبقَ فيه من التكرار ما يجده الضاغط؛ فتستعيد عادةً شيئاً كعُشر الثلث الذي أضافه base64، لا الثلث كله. أما ملف SVG المرمَّز بالنسبة المئوية فالحال فيه عكس ذلك: هو نصّ بعد، فينضغط كما كان ينضغط تقريباً، وهذا سبب آخر لألا ترمّزه بـ base64.
هل يغيّر هذا صورتي أصلاً؟
لا، وهذا فرق مقصود عن معظم الأدوات هنا. فلا شيء يُفكّ ترميزه إلى بكسلات ويُعاد ترميزه: البايتات التي خرجت من قرصك هي البايتات التي تدخل في الـ URI. فيبقى ملف JPEG هو ملف JPEG نفسه بالضبط، بالجودة نفسها والأبعاد نفسها. وهو السبب في أن الناتج يمكن وصفه بأنه الملف نفسه لا نسخة منه.
إذن تذهب بيانات EXIF وGPS إلى ورقة الأنماط أيضاً؟
نعم، وهذا هو الجزء الجدير بالتفكير قبل اللصق. فلأن لا شيء يُعاد ترميزه، يسافر مع الصورة كلُّ ما كتبته الكاميرا: الموقع، والوقت، والرقم التسلسلي للكاميرا. وفي صورة من هاتف قد يكون ذلك 30 KB من الملف، تصير 40 KB من base64 على المسار الحرج لصفحتك، وعنوانَ منزل في شيء سيُودَع في مستودع. وهذه الصفحة تقرأ كم من البيانات الوصفية في ملف JPEG أو PNG أو WebP وتقوله. ولإخراجها أولاً، استخدم عارض EXIF ومُزيله.
لماذا استخدم نوعاً غير امتداد ملفي؟
لأن الامتداد قد يكون خطأً والبايتات لا تكون. فملفٌ اسمه logo.png وقد صُدِّر في الحقيقة JPEG أمرٌ شائع بما يكفي لأن تضطر كل أداة صور إلى التعامل معه، والـ Data URI التي تعلن النوع الخطأ لا تظهر ببساطة — لا بديل ولا رسالة خطأ تستحق القراءة. فيُقرأ النوع من أول بايتات الملف، وهي تقول ما هو قولاً قاطعاً في كل صيغة هنا، وتخبرك الصفحة حين يختلف الاثنان.
المعاينة فارغة. ما الذي حدث؟
على الأرجح لا شيء يخصّ الـ URI. فـ HEIC وTIFF كلتاهما تنتج Data URI صحيحة تماماً لا يرسمها متصفح غير Safari، فالصورة غائبة حيثما لصقتها كذلك — حوِّلها إلى PNG أو JPEG أو WebP أولاً بـ ضاغط الصور أو أداة تغيير حجم الصور. وإن كانت الصيغة من الصيغ المعتادة، فالأرجح أن الملف نفسه معطوب: فالمعاينة مرسومة من الـ URI التي بنتها هذه الصفحة، وفراغها يعني أن الصورة لم يُفكّ ترميزها.
هل ثمّة حدّ لحجم الـ Data URI؟
ليس حداً ستلقاه في CSS ولا في وسم <img>؛ فالمتصفحات الحديثة لا تفرض هناك سقفاً عملياً. أما ما تحدّه المتصفحات فعلاً فهو كتابة Data URI في شريط العنوان، وهو ما ترفضه أكثرها الآن لأي شيء غير تافه، لأسباب أمنية لا علاقة لها بهذا الاستعمال. والحدّ الحقيقي هو الذي سبق: فقبل أن ينكسر شيء تقني بمدة طويلة، تكون الصفحة التي هو فيها قد صارت أبطأ مما كانت ستكون بملف صورة عادي.
هل هو مجاني، وهل أحتاج إلى حساب؟
هو مجاني، ولا حساب ولا تسجيل دخول ولا فترة تجريبية ولا علامة مائية. ولا حدّ لعدد الملفات ولا لأحجامها كذلك، إذ لا خادم يدفع ثمنها — فالعمل يجري على جهازك أنت. ويحمل الموقع إعلانات، وهي ما يدفع تكاليفه؛ ولا يُعطى المعلنون شيئاً عن صورك.
هل يعمل دون اتصال؟
نعم. حمِّل الصفحة مرة، ثم اقطع اتصالك بالإنترنت وستظل تعمل. وهذه أيضاً أبسط طريقة لإثبات أنه لا يُرفع شيء: فأداةٌ ترسل صورك بعيداً لتُرمَّز كانت ستتوقف في اللحظة التي تقطع فيها الاتصال.