PDFMove
ماذا يحدث للشفافية عند التحويل من PNG إلى BMP؟
دليل

ماذا يحدث للشفافية عند التحويل من PNG إلى BMP؟

4 دقيقة للقراءة

الموضوع الحقيقي للتحويل

أكثر ما يشغل الناس في الانتقال من PNG إلى BMP هو حجم الملف عادةً — وهم محقون في ذلك لأن الفارق لافت. لكن الحجم نتيجة يمكن التنبؤ بها؛ إنه ازدياد رياضي لا مفاجأة فيه.

أما المفاجأة الحقيقية فتقع في الشفافية. فحين تحوّل ملف PNG شفافًا إلى BMP وتفتحه في النظام الهدف، من المرجح جدًا أن تواجه خلفية لم تكن تتوقعها. وهذا المقال يشرح ما يحدث هناك بالضبط.

ما قناة alpha؟

في PNG قد توجد إلى جانب معلومة اللون في كل بكسل معلومة عتامة أيضًا. وتسمى هذه قناة alpha. وقد تقع القيمة في مدى يمتد من الشفافية التامة إلى العتامة التامة؛ أي أن البكسل قد يكون ظاهرًا تمامًا أو غير ظاهر تمامًا أو نصف شفاف.

وهذه القيم الوسيطة مهمة. فالخطوط المنحنية على حافة الشعار تُنعَّم ببكسلات نصف شفافة كي لا تبدو مسنّنة. وتأثير الظل يزداد شفافية تدريجيًا. أي أن قناة alpha ليست مجرد قول «لا خلفية»، بل هي وصفة لكيفية مزج الصورة.

الغموض في جانب BMP

تستطيع النسخة 32 بت BGRA من BMP أن تحمل بايت alpha لكل بكسل. أي أن الشفافية تبدو قابلة للنقل من ناحية المواصفة.

أما عمليًا فالوضع مشوّش. فهذا الدعم غير متسق بين التطبيقات القارئة:

  • بعض البرامج تفسّر بايت alpha تفسيرًا صحيحًا وتُظهر الشفافية.
  • وكثير من البرامج تتجاهل بايت alpha تجاهلًا تامًا وترسم الصورة معتمة.
  • وبعض البرمجيات تتعامل مع ذلك البايت على نحو لا تتوقعه إطلاقًا.

وهذا الغموض ناشئ عن فلسفة التصميم الأولى لـ BMP. فقد أُنشئ التنسيق من أجل البساطة؛ وبقي دعم alpha أشبه بامتداد أُضيف لاحقًا ولم يصر يومًا توقعًا شاملًا.

والنتيجة هي: حمل ملفك لمعلومة الشفافية لا يضمن أن البرنامج الهدف سيستخدمها. ولأن سبب تحويلك إلى BMP هو في العادة نظام قديم أصلًا، فإن افتراض أن ذلك النظام لا يدعم alpha صحيح منطقيًا لا إحصائيًا فحسب.

إلى ماذا تتحول المناطق الشفافة؟

عند تجاهل alpha تُسطَّح المناطق الشفافة، أي تُملأ بلون معتم. واللون الذي ستُملأ به ليس ثابتًا:

  • الأبيض، وهو الافتراض الأكثر شيوعًا.
  • الأسود، في بعض الأدوات والقارئات.
  • لون غير متوقع، لأن بيانات اللون الكامنة تحت البكسل قد تظهر عند تجاهل alpha.

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

المشكلة الخفية في الحواف نصف الشفافة

للتسطيح أثر جانبي أقل شهرةً وأكثر خبثًا.

فالبكسلات نصف الشفافة على الحواف المنحنية للشعار تُمزَج أثناء التسطيح بلون الخلفية الذي تحتها. والشعار المسطَّح على خلفية بيضاء يحمل على حوافه انتقالًا يميل إلى الأبيض.

وحين تستخدم ذلك الشعار على لوحة داكنة يبقى هذا الانتقال الفاتح في الحواف ويظهر هالةً رفيعة حوله. والصورة ليست متلفة تمامًا لكنها لا تبدو احترافية أيضًا، ويصعب العثور على السبب لأن الملف يبدو «صحيحًا».

ولهذا فإن اختيار لون التسطيح اختيارًا صحيحًا لا يحدد الخلفية وحدها، بل يحدد جودة الحواف كذلك.

الطريقة الصحيحة: خذ زمام الأمر بيدك

سبيل إزالة الغموض هو ألّا تترك القرار للأداة.

املأ الخلفية بنفسك قبل التحويل. افتح الصورة في محرّر، وضع تحتها طبقة مصمتة باللون الذي سيُستخدم في الوجهة، ثم سطّح. فلم تعد ثمة شفافية؛ والصورة صارت تمامًا كما تريد، ولن تواجه أي مفاجأة حين تحوّل من PNG إلى BMP.

ولهذه المقاربة ثلاث فوائد:

  • لون الخلفية اختيارك أنت على وجه اليقين.
  • تُمزَج الحواف نصف الشفافة باللون الصحيح، فلا تنشأ مشكلة الهالة.
  • لم يعد يهم أن يدعم النظام الهدف alpha أو لا يدعمها.

إن كان صون الشفافية شرطًا

في بعض الحالات تكون الشفافية مطلوبة حقًا — فإن كان عنصر واجهة سيُعرض فوق خلفيات متغيرة لم تنفع خلفية مصمتة.

وفي هذه الحالة تكون الخيارات:

ابقَ في PNG. فإن كان النظام الهدف يقبل PNG فلا حاجة إلى التحويل إطلاقًا. وPNG يدعم قناة alpha دعمًا كاملًا ومتسقًا.

ابحث عن آلية النظام الهدف نفسه. فبعض الواجهات القديمة تستخدم أساليب مختلفة بدلًا من قناة alpha: ملف قناع منفصل، أو أسلوب لون مفتاحي يعدّ لونًا معينًا شفافًا. فقد يعمل النظام مثلًا بقاعدة «اعتبر اللون الأرجواني الفاقع شفافًا». وإن وُجدت مثل هذه الآلية فإن تجهيز الصورة وفقها أوثق بكثير من الاعتماد على قناة alpha في BMP.

غيّر التوقع. فأحيانًا يكون الحل الأعمل هو تكييف التصميم ليعمل بخلفية ثابتة.

الخلاصة

في الانتقال من PNG إلى BMP تُنقَل بيانات اللون نقلًا آمنًا لأن التنسيقين عديما فقد. أما ما يضيع فهو الشفافية، وهذا الفقد لا يمكن التراجع عنه. فدعم alpha موجود في مواصفة BMP لكنه غير موثوق عمليًا؛ فافترض أن نظامك الهدف سيتجاهله. وأنظف سبيل هو أن تجري التسطيح بنفسك بدلًا من تركه لأداة التحويل، وأن تختار لون الخلفية اختيارًا واعيًا. وإن كانت الشفافية شرطًا فعليًا فالجواب الصحيح ليس التحويل بل البقاء في PNG.

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

هل يدعم BMP قناة alpha فعلًا أم لا؟

الأمران صحيحان معًا، وهنا تكمن المشكلة بالضبط. فالنسخة 32 بت BGRA من BMP تستطيع أن تحمل بايت alpha لكل بكسل، أي أن الشفافية قابلة للنقل من ناحية المواصفة. غير أن هذا الدعم غير متسق بين التطبيقات القارئة؛ فكثير من البرامج لا تفسّر بايت alpha إطلاقًا وتعرض الصورة معتمة تمامًا. وبعض برامج الطابعات تستخدم ذلك البايت لأغراض مختلفة. والنتيجة أن حمل الملف لمعلومة الشفافية لا يضمن أن البرنامج الهدف سيستخدمها.

إلى أي لون تتحول المناطق الشفافة؟

هذا يتوقف على الأداة التي تجري التحويل وعلى البرنامج الذي يقرأ الملف؛ ولا توجد قاعدة ثابتة. وأكثر النتائج شيوعًا خلفية بيضاء أو سوداء، لكن في بعض الحالات تظهر بيانات اللون الكامنة تحتها عند تجاهل alpha فتتكوّن صورة غير متوقعة. والسبيل الموثوق الوحيد لإزالة هذا الغموض هو أن تملأ الخلفية باللون الذي تريده بنفسك قبل التحويل وتزيل الشفافية إزالة واعية.

سأستخدم شعاري الشفاف على خلفية داكنة، فماذا أفعل؟

لوّن خلفية الشعار قبل التحويل باللون الداكن الذي سيُستخدم في الوجهة. فإن حوّلت شعارًا شفافًا إلى BMP مباشرةً فالأرجح أن تصبح الخلفية بيضاء أو سوداء وتظهر على اللوحة الداكنة مستطيلًا قبيحًا. كما أن بكسلات الحواف في الشعارات الشفافة تكون نصف شفافة؛ وعند تسطيحها تظهر وفق الخلفية التي مُزجت معها. فالشعار المسطَّح على خلفية خاطئة يبقى حول حوافه هالة رفيعة فاتحة اللون.

إن كان صون الشفافية شرطًا، فما البديل لديّ؟

البديل الأصح هو ألّا تجري التحويل وأن تبقى في PNG؛ فهو يدعم قناة alpha دعمًا كاملًا ومتسقًا. وإن كان النظام الهدف لا يقبل PNG فابحث عمّا إذا كانت لديه آلية خاصة به تتعلق بالشفافية. فبعض الواجهات القديمة تستخدم ملف قناع منفصلًا أو أسلوب لون مفتاحي يعدّ لونًا معينًا شفافًا. وإن وُجدت إحدى هذه الآليات فإن تجهيز الصورة وفقها أوثق بكثير من الاعتماد على قناة alpha في BMP.

جرّب ذلك الآن باستخدام PNG → BMP Dönüştür.

جرّب PNG → BMP Dönüştür