كيف يعمل تحويل الصور داخل المتصفّح فعلًا (ولماذا بنيته هكذا)
Dov Azencot
@DovAzencotسبب وجود هذا الموقع كلّه لحظة قلق صغيرة سخيفة مرّت بي قبل سنوات. احتجت إلى تحويل صورة HEIC واحدة إلى JPG، فكتبت الشيء البديهي في شريط البحث، فوصلت إلى محوّل يريدني أن أرفع صورتي إلى خادمه. ففعلت. ونجح. ثم جلست أفكّر: هذه الصورة الآن على جهاز لا أعرف عنه شيئًا، يديره أناس لن ألتقيهم أبدًا، ويحتفظون بها مدّةً لم يخبرني بها أحد. للقطة شاشة عشوائية، لا بأس. لكنها لم تكن لقطة شاشة، بل صورة شخصية، وقد ناولتها للتوّ لغرباء لأوفّر على نفسي ثلاثين ثانية.
هذه هي المشكلة التي عزمت على ألّا أعيشها بعد اليوم. وتبيّن أن الجواب هو أن الرفع لم يكن ضروريًّا أصلًا من البداية.
الطريقة القديمة: استئجار حاسوب غريب
يعمل المحوّل التقليدي على الإنترنت كخدمة طلب بالبريد. ترسل ملفّك إلى خادم. يشغّل الخادم التحويل ببرمجيات مثبّتة على جهازه هو. ثم يعيد النتيجة إليك. تكون صورتك قد قطعت رحلة ذهاب وإياب عبر عتاد لا تتحكّم فيه، وفي مكان ما بالمنتصف جلست، كاملةً، على قرص ليس لك.
كل وعد خصوصية يُثبَّت على هذا النموذج وعدٌ بشأن السلوك — يُحذف الملف بعد ساعة، لا ينظر إليه أحد. ربما يصمد ذلك. ربما. لكنك لا تملك وسيلة للتحقّق، وأنت تأتمنه على بايتات ملفّك الفعلية. الثقة هي البنية كلّها، والثقة بالضبط هي ما لم أشأ أن أنفقه.
الطريقة الجديدة: متصفّحك يملك الحاسوب أصلًا
إليك ما تغيّر. تستطيع المتصفّحات الحديثة تشغيل برامج حقيقية مصرَّفة بسرعة تقارب سرعة العتاد الأصلي، عبر شيء اسمه WebAssembly — أو WASM اختصارًا. فمرمّزات الصور التي كانت تعيش على خادم — الشيفرة التي تقرأ PNG، وترمّز WebP، وتفكّ HEIC — يمكن تصريفها إلى WASM وتشغيلها داخل تبويب المتصفّح المفتوح عندك أصلًا.
فحين تُفلِت ملفًّا على صفحة مبنيّة هكذا، تُنزَّل برمجية التحويل إلى جهازك، مرّة واحدة، كأي جزء آخر من صفحة الويب. ومن حينها يجري العمل الفعلي — قراءة صورتك، وتحويل ترميزها، وكتابة الملفّ الجديد — على معالجك أنت، في ذاكرتك أنت. وتُعاد النتيجة إليك مباشرةً كتنزيل. لا يُرسل ملفّك إلى أي مكان، لأنه لا يوجد ما يُرسل إليه. لا خادم في الحلقة إطلاقًا.
لذلك أستطيع أن أقول إن ملفّاتك لا تغادر جهازك وأعنيها حقيقةً لا سياسةً. ليست المسألة أنني أعدك بألّا أنظر، بل أنه لا يوجد مسار تصل به صورتك إليّ. لا أستطيع استرجاع صورتك ولو أمرتني محكمة، لأنها لم تكن قطّ على جانبي من السلك. الخصوصية ليست ميزة أضفتها من فوق، بل نتيجة لمكان تشغيل الشيفرة.
كيف تتأكّد أن ذلك صحيح
لست مضطرًّا إلى تصديق كلامي، وهذا الجزء الذي أحبّه أكثر. افتح أدوات المطوّر في متصفّحك، وراقب تبويب الشبكة، وحوّل ملفًّا. سترى الصفحة ومرمّز WASM يُنزَّلان مرّة واحدة. ولن ترى صورتك تصعد. والأفضل: حمّل الصفحة، أطفئ شبكتك اللاسلكية، ثم حوّل شيئًا رغم ذلك. سيظلّ يعمل، لأن كل ما يحتاج إليه موجود على جهازك أصلًا. أداة ترفع ملفّاتك لا تقدر على ذلك. أما هذه فتقدر.
القيد الحقيقي الوحيد
وعدت بالصدق، فها هو. تشغيل التحويل على جهازك يعني أنه يستعمل ذاكرتك أنت، وتبويب المتصفّح لا يحصل على ذاكرة لا نهائية ليلعب بها.
للملفّات العادية — الصور ولقطات الشاشة والشعارات، ما يحوّله الناس طوال اليوم — هذا غير ذي شأن. لكن إن رميت عليه شيئًا ضخمًا فعلًا، صورة واحدة بدقّة قصوى، أو دفعة هائلة دفعةً واحدة، فقد تصطدم بالسقف. فكّ ترميز صورة يعني الاحتفاظ ببكسلاتها غير المضغوطة في الذاكرة، وهي أكبر بكثير من الملفّ على القرص، وصورة عملاقة قد تستنزف ما يُسمح للتبويب به. وحين يحدث ذلك يتباطأ التحويل حتى الزحف أو يستسلم التبويب.
خادم بذاكرة 64 غيغابايت لا يواجه تلك المشكلة أبدًا. فها هي المقايضة، مذكورةً بصراحة: محوّل على الخادم يستطيع التهام ملفّات أكبر مما قد يحتمله جهازك يومًا. هذا النهج لا يستطيع. وما يمنحك إياه في المقابل أن ملفّك لا يغادر يديك أبدًا. للأغلبية الساحقة ممّا يحوّله الناس فعلًا، هذه مقايضة تستحقّ القبول بلا تردّد. أما لملفّ وحشيّ نادر، فهي قيد حقيقي، وأفضّل أن أخبرك به على أن أتظاهر بغيابه.
لماذا ما زلت أراه الإعداد الافتراضي الصحيح
معظم التحويلات ملفّات عادية لم تكن بحاجة قطّ إلى لمس خادم من البداية. كان الرفع دائمًا بقيّة من عصر لم تقدر فيه المتصفّحات على هذا العمل بنفسها. أما الآن فتقدر. فانقلب الإعداد الافتراضي العاقل: أبقِ الملفّ على جهازك، وأنجز العمل محلّيًا، ولا تلجأ إلى خادم إلا في المناسبة النادرة التي يعجز فيها عتادك فعلًا.
هذه هي الفكرة كلّها خلف كل شيء هنا. إنه الموقع نفسه الذي بنيته لنفسي بعد تلك الظهيرة القلقة الواحدة، كي لا أضطرّ مرّةً أخرى إلى تسليم صورة شخصية لغريب لمجرّد تغيير امتدادها. تبيّن أنني لم أكن مضطرًّا قطّ. ولا أنت.
مقالات ذات صلة
لماذا أحوّل PNG إلى WebP (والمرّة الوحيدة التي لا أفعل فيها)
صيغة PNG رائعة للتحرير، لكنها مبذّرة حين تنشرها. إليك ما توفّره WebP فعلًا، وأين لا توفّر لك شيئًا، والقاعدة الوحيدة التي لا أخالفها أبدًا.
PNG أم JPG؟ قاعدة العشر سنوات التي أقرّر بها
بلا فقدان مقابل فاقدة، حواف مقابل صور فوتوغرافية، شفافية مقابل لا شفافية. سؤال واحد بسيط يخبرك أي صيغة يجب أن يكون عليها الملف — مع جدول أحجام حقيقي للإثبات.
لماذا صور iPhone بصيغة HEIC (ومتى أحوّلها إلى JPG ببساطة)
صيغة HEIC أفضل فعلًا، لكن نصف الويب ما زال يعجز عن فتحها. إليك لماذا اختارتها Apple، وما الذي تخسره حين تحوّل إلى JPG، ومتى لا أتكبّد العناء.
كل المقالات