أين تذهب الشفافية عند التحويل من PNG إلى JPG؟
4 دقيقة للقراءة
ما يُفقد ليس إعداداً، بل قناة كاملة
تحويل ملف PNG بخلفية شفافة إلى JPG ثم مواجهة مستطيل أبيض هو أكثر نتائج تحويل الصور إلكترونياً إثارةً للدهشة. وغالباً ما يظن الناس أن الأمر خطأ في الإعدادات فيشرعون في البحث عن الخيار الصحيح. غير أن ما يُفقد هنا ليس إعداداً، بل طبقة بيانات لم تمتلكها الصيغة قط.
في هذا المقال نشرح ماهية قناة ألفا، ولماذا لا وجود لها في JPG، وما الذي يُفعل بالبكسلات الشفافة تحديداً لحظة التحويل.
ما قناة ألفا؟
يحمل كل بكسل في الصورة الرقمية معلومات لونية. وفي التمثيل الشائع تتألف هذه المعلومات من ثلاث قنوات: الأحمر والأخضر والأزرق. وتضيف صيغة PNG إلى هذه الثلاث قناة رابعة هي ألفا. وقناة ألفا لا تخزّن اللون، بل مدى عتامة ذلك البكسل.
ويمكن لقيمة ألفا أن تتخذ 256 مستوى مختلفاً. فعند أحد الطرفين يكون البكسل غير مرئي كلياً، فتظهر الأرضية التي خلفه كما هي. وعند الطرف الآخر يكون البكسل معتماً تماماً، فلا يُظهر ما خلفه إطلاقاً. أما القيم الوسيطة فتعبّر عن الشفافية الجزئية، وهي الأهم عملياً: فالانتقال الناعم عند الحافة المائلة لشعار، والظل أسفل جسم ما، والأرضية الضبابية لتأثير زجاجي، كلها تعمل بقيم ألفا الوسيطة.
ولهذا فإن شفافية PNG ليست ثنائية "موجودة أو معدومة". وهذه بالضبط هي النقطة التي تفترق فيها عن الشفافية الثنائية في GIF التي لا تستطيع الاختيار إلا بين الشفافية التامة والعتامة التامة.
لماذا لا توجد قناة ألفا في JPG؟
صُمّمت صيغة JPG لتخزين الصور الفوتوغرافية بكفاءة. والصورة الفوتوغرافية لا خلفية لها؛ فالإطار المربّع مملوء بكامله. وعليه لم تنشأ في تصميم الصيغة حاجة كالشفافية أصلاً. ولا يوجد في بنية ملف JPG حقل مُعرَّف لتخزين قناة ألفا.
وهذا ليس نقصاً في برنامج ولا خاصية أُغلقت لاحقاً، بل قرار تصميمي في الصيغة ذاتها. ولا تستطيع أي أداة تحويل ولا أي إعداد تغييره. فلا يوجد خيار اسمه "حوّل إلى JPG مع الحفاظ على الشفافية"، ولا يمكن أن يوجد.
ما الذي يحدث بالضبط لحظة التحويل؟
تفتح أداة التحويل ملف PNG فتحصل على مصفوف بكسلات رباعي القنوات. ولحفظه بصيغة JPG عليها خفض هذا المصفوف إلى ثلاث قنوات. ولو أُسقطت قناة ألفا ببساطة لبقيت البكسلات الشفافة بألوان عشوائية؛ ولهذا فإن ما يجري هو مزج يُسمّى "التسطيح".
وأثناء التسطيح يختار البرنامج لون ملء، ثم يمزج كل بكسل بهذا اللون وفق قيمة ألفا الخاصة به. فالبكسل الشفاف كلياً يصبح لون الملء نفسه. والبكسل نصف الشفاف يتحول إلى متوسط مرجّح بين لونه الأصلي ولون الملء. أما البكسلات المعتمة تماماً فتبقى دون تغيير.
ولا تنص الصيغة على ماهية لون الملء؛ فهو من اختيار البرنامج. والغالبية العظمى من محرّرات الصور والأدوات الإلكترونية تستخدم الأبيض. بينما تنتج بعض مكتبات معالجة الصور ملئاً أسود لأنها تمثّل المناطق الشفافة بالقيمة صفر. ولهذا فمن الطبيعي أن تمرّر الملف نفسه عبر أداتين مختلفتين فتحصل على لوني خلفية مختلفين.
أين تكون الخسارة أشد إيلاماً؟
في الشعارات ذات الحواف الناعمة. تبدو الحواف المائلة للشعار ملساء بفضل تنعيم الحواف، وهذا التنعيم يتحقق ببكسلات نصف شفافة. وبعد الملء الأبيض قد يظل الشعار حسن المظهر فوق أرضية بيضاء، لكنك متى وضعته فوق أرضية داكنة ظهرت هالة فاتحة حول الحواف.
في الرسوم ذات الظلال. تُمزج الظلال الناعمة المصممة لتبدو طبيعية بلون الملء، فتعجز عن الانسجام مع الأرضية التي تحتها. ويتحول الظل إلى بقعة ثابتة مستقلة عن الأرضية.
في صور المنتجات المزالة الخلفية. الخلفية التي أُزيلت لأغراض التجارة الإلكترونية تعود لحظة التحويل إلى JPG، لكن هذه المرة على هيئة مستطيل أبيض. فتضيع تماماً مرونة عرض المنتج فوق أرضيات مختلفة.
لماذا لا يمكن التراجع؟
الخسارة لا تقع في صيغة الملف بل في الصورة ذاتها. فبعد التحويل لم تعد المساحة البيضاء منطقة موسومة بأنها "كانت شفافة سابقاً"؛ بل صارت جزءاً حقيقياً وعادياً من الصورة. وإذا أعدت الملف إلى PNG فستخزّن هذه المساحة البيضاء أيضاً على نحو عديم الفقد شأنها شأن سائر البكسلات.
والسبيل الوحيد لاستعادة الشفافية هو إزالة الخلفية من جديد. وهذا يسير نسبياً مع ملء صلب أحادي اللون، غير أن النتيجة لن تكون بنظافة الأصل لأن الحواف الناعمة والظلال قد امتزجت بالفعل.
ما المنهج الصحيح؟
لا تحذف ملف PNG المصدر أبداً؛ وأنتج دائماً ملفاً جديداً عند تحويل PNG إلى JPG. وإذا كانت حاجتك إلى الشفافية قائمة فلا ينبغي أن تكون JPG هي الصيغة الهدف: فصيغة WEBP تدعم قناة ألفا في الوضعين ذي الفقد وعديم الفقد، وتمنح في العادة ملفاً أصغر من PNG بفارق واضح. وإذا كانت أرضية الصورة لوناً معروفاً وثابتاً في كل الأحوال، فاختيار ذلك اللون عمداً كلون ملء حلٌّ مشروع أيضاً — ففي هذه الحالة لا تتكبد خسارة، وإنما تتنازل عن المرونة فحسب.
الخلاصة
عند التحويل إلى JPG لا تذهب الشفافية إلى مكان ما، بل يستحيل تخزينها أصلاً. وبما أن قناة ألفا غير مُعرَّفة في بنية ملف JPG، تُمزج البكسلات الشفافة ونصف الشفافة بلون ملء وتصير جزءاً دائماً من الصورة. أما كون هذا اللون أبيض أو أسود فهو من اختيار الأداة. والسؤال الذي ينبغي طرحه قبل اتخاذ القرار هو: هل ستضطر خلفية هذه الصورة إلى الاستقرار فوق أرضية مختلفة مستقبلاً؟ فإن كان الجواب نعم، فليست JPG هي الصيغة الهدف الصحيحة.
الأسئلة الشائعة
لماذا تخرج الخلفية بيضاء أحياناً وسوداء أحياناً أخرى؟
بما أن معلومات الشفافية لا يمكن تخزينها في JPG، يتعيّن على أداة التحويل أن تملأ البكسلات الشفافة بلون ما، واختيار هذا اللون قرار يعود إلى البرنامج لا إلى الصيغة. ومعظم الأدوات الإلكترونية ومحرّرات الصور تستخدم الأبيض لأن أغلب خلفيات المستندات والويب بيضاء. أما بعض المكتبات البرمجية فتمثّل البكسلات الشفافة بالقيمة صفر، فتخرج النتيجة سوداء. ولهذا ليس مستغرباً أن تُحوّل الملف نفسه بأداتين مختلفتين فتحصل على نتيجتين مختلفتين.
ماذا يحدث للبكسلات نصف الشفافة أثناء التحويل؟
تُمزج البكسلات نصف الشفافة بلون الملء؛ أي إن ظلاً رمادياً شفافاً بنسبة 50% يتحول فوق ملء أبيض إلى درجة رمادية فاتحة، ولم يعد يحمل أي معلومة عن الشفافية. وهذه أبرز مشكلة تلفت النظر في الشعارات ذات الظلال والرسوم ذات الحواف الناعمة، لأن حواف الصورة لم تعد تندمج مع الأرضية بل تظهر على هيئة هالة بيضاء. وتتضح هذه الهالة فوراً عند وضع الصورة فوق خلفية داكنة. وهذا التأثير قائم بدرجة ما في كل صورة فيها تنعيم للحواف.
هل من سبيل للحفاظ على الشفافية قبل التحويل؟
لا سبيل إلى ذلك عند التحويل إلى JPG، لأن الصيغة لا تُعرّف قناة ألفا أصلاً. فإن أردت الحفاظ على الشفافية مع تصغير الملف، فالهدف الصحيح هو WEBP؛ إذ تدعم الشفافية في الوضعين ذي الفقد وعديم الفقد، وهي أصغر من PNG بفارق واضح في العادة. وبدلاً من ذلك يمكنك البقاء على PNG مع تقليص أبعاد الصورة بالبكسل إلى المقاس المطلوب فعلاً. وإذا كانت الأرضية النهائية للصورة لوناً ثابتاً ومعروفاً في كل الأحوال، فاستخدام ذلك اللون عمداً كلون ملء يظل حلاً مقبولاً.
هل تعود الشفافية إذا أعدت ملف JPG إلى PNG؟
لا تعود. فتحويل الصيغة لا يغيّر سوى طريقة تحزيم البيانات، ولا يُعيد إنتاج معلومات مُسحت. ففي JPG أصبح كل بكسل معتماً، وصار لون الملء جزءاً حقيقياً من الصورة؛ وإذا حوّلتها إلى PNG فستُخزَّن تلك المساحة البيضاء أيضاً على نحو عديم الفقد. ولاستعادة الشفافية عليك إزالة الخلفية من جديد، أي إجراء عملية منفصلة لإزالة الخلفية.
جرّب ذلك الآن باستخدام PNG → JPG Dönüştür.
جرّب PNG → JPG Dönüştür