سؤال

لاحظت ذلك Color هيكل من System.Drawing يمثل اللون في ARGB مساحة اللون.لذلك هناك بعض الأسئلة:

  • كيفية تحويل الصورة بين ARGB وYUV في C#؟لقد وجدت صيغًا تصف تحويل RGB إلى YUV.إذن ماذا علي أن أفعل بقناة ألفا؟
  • هل توجد مكتبات مجانية/تجريبية تدعم مساحات الألوان المختلفة؟أو كيف أنفذه بنفسي بأفضل طريقة؟
  • كيف يمكنني تمثيل "الصورة النقطية" كمصفوفة ثنائية الأبعاد مع إمكانية التكرار عليها؟فهل الميراث هو السبيل الوحيد لتحقيق ذلك؟

هذا كل شيء بعد)

شكرًا!

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

المحلول

لا يمكنك تحويل argb مباشرة إلى YUV (بدون خسارة) لأن YUV لا يحتوي على معلومات ألفا.

اعتمادًا على ما تريد فعله باللون بعد أن تتوفر لديك هذه الاحتمالات:

  • ما عليك سوى قطع ألفا والتخلص من الشفافية

  • تقوم بالتحويل إلى ayuv يحتوي أيضًا على قناة ألفا

التحويل بين مساحات الألوان

أحد الاحتمالات لتحويل الصورة النقطية إلى بايت[] هو كتابتها في تدفق الذاكرة وقراءتها بحكمة.

MemoryStream stream = new MemoryStream();
bitmap.Save(stream, ImageFormat.Bmp);
byte[] data = stream.ToArray();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top