كيفية تحويل BMP 32 بت لاحتواء قناة ألفا؟[مغلق]

StackOverflow https://stackoverflow.com/questions/7369649

  •  28-10-2019
  •  | 
  •  

سؤال

لدي صورة PNG مع ألفا ، وأحتاج إلى تحويلها إلى BMP لتحميلها في تطبيق OpenGL الخاص بي.ومع ذلك ، يحتوي BMP على خيار واحد فقط لـ 32 بت ، وهو XRBG حيث يكون 'X' مجرد بايت إضافي لغرض الحشو (محاذاة 4 بايت).

السؤال هو كيفية تضخيم حجم البايت "X" هذا لاحتواء قناة ألفا ، بحيث يمكن تحميل BMP (32 بت XRGB) إلى تطبيق GL بوحدات بكسل شفافة؟

ربما يتعين عليّ إنشاء أداتي الخاصة لإجراء هذا التحويل؟ما أحتاجه هو RGBA ، وليس "XRGB" أو "ARGB" ، فهل يجب علي قراءة ملف XRGB BMP ومسح بكسل بكسل لتحويله إلى RGBA؟

ما هي أفضل طريقة في VC ++ إذا كان التحويل ضروريًا؟ أي برنامج يمكنه إنشاء BMP شفاف؟

هل كانت مفيدة؟

المحلول

يقول pixelformer أنه يمكنه فعل ذلك http://www.qualibyte.com/pixelformer/#color_depths

نصائح أخرى

يمكنك استخدام PixelFormer .

إذا كنت تستخدم ULW_ALPHA في UpdateLayeredWindow () و LoadImage () ، تتوقع الوظيفة أن يكون ملف BMP هو 32 -بت BGRA (مع أول مضاعفة ألفا و ترتيب الصف السفلي ) بخلاف ذلك لن تعرض الوظيفة الصورة النقطية بشكل صحيح.

يمكنك تحويل PNG إلى BMP 32 بت BGRA باستخدام PixelFormer (الخطوة 2).

  1. افتح PixelFormer وانقر على ملف> جديد:

أدخل وصف الصورة هنا

  1. ثم ملف> تصدير

أدخل وصف الصورة هنا

ملاحظة: لقد توقف

Photoshop عن الدعم عند تصدير bmp بقناة ألفا (لا يمكنه تنفيذ ألفا مسبقًا ، وستصبح قيمة قناة ألفا 0). ستفقد قناة ألفا ولكن سيتم تحميل قيمة BGR بشكل صحيح. لا يزال بإمكانك استخدام Photoshop ولكن يجب عليك رسم ألفا يدويًا في علامة تبويب قناة ألفا.

Gimp قد تعطل أيضًا الدعم عند التصدير كملف bmp. لن يقوم LoadImage () بتحميل أي شيء ولا يمكنك رؤية الصورة. أظن أن سبب هذه المشكلة هو تصدير Gimp لـ BMP كـ ترتيب صف من أعلى إلى أسفل .

يحتوي

محرر موارد Visual Studio أيضًا على خيار لإنشاء / تعديل BGR 32 بت لكل بكسل ولكنه لا يدعم قناة ألفا

كنت بحاجة إلى فعل الشيء نفسه مرة واحدة وكتبت أداة سطر أوامر صغيرة يمكن العثور عليها هنا .

البرامج مفتوحة المصدر - يمكن استخدام ImageMagick أو Gimp لتحويل الصور هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top