نموذج ألوان RGBA

مثال على صورة RGBA مركبة على خلفية مربعات. قيمة ألفا تساوي 0% في الأعلى و100% في الأسفل.

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

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

في بعض السياقات، يشير الاختصار "RGBA" إلى تخطيط ذاكرة محدد (يُسمى RGBA8888 أدناه)، بينما تُستخدم مصطلحات أخرى مثل "BGRA" للدلالة على بدائل. وفي سياقات أخرى، يشير "RGBA" إلى أي تخطيط.

التمثيل

في مجال رسومات الحاسوب، يجب تخزين وحدات البكسل التي تُشفّر معلومات مساحة ألوان RGBA في ذاكرة الحاسوب (أو في ملفات على القرص). في معظم الحالات، تُستخدم أربعة أجزاء متساوية الحجم من الذاكرة المتجاورة، جزء لكل قناة، ويشير الرقم 0 في القناة إلى اللون الأسود أو الشفافية (ألفا)، بينما تشير جميع البتات التي قيمتها 1 إلى اللون الأبيض أو الشفافية التامة (ألفا). يُعدّ التنسيق الأكثر شيوعًا هو تخزين 8 بتات ( بايت واحد ) لكل قناة، أي 32 بت لكل بكسل.

قد يختلف ترتيب هذه البايتات الأربعة في الذاكرة، مما قد يُسبب التباسًا عند تبادل بيانات الصور. غالبًا ما يُشار إلى هذه الترميزات بالأحرف الأربعة بترتيب معين (الأكثر شيوعًا RGBA). لم يُحدد تفسير هذه الرموز المكونة من أربعة أحرف بشكل قاطع. هناك طريقتان شائعتان لفهم الرمز "RGBA":

  • في نظام ترتيب البايت، يُفهم أن "RGBA" تعني البايت R، متبوعًا بالبايت G، متبوعًا بالبايت B، ومتبوعًا بالبايت A. ويُستخدم هذا النظام بشكل شائع لوصف تنسيقات الملفات أو بروتوكولات الشبكة، وكلاهما موجه نحو البايت.
  • في مخطط ترتيب الكلمات، يُفهم أن "RGBA" يمثل كلمة كاملة مكونة من 32 بت، حيث يكون R أكثر أهمية من G، الذي هو أكثر أهمية من B، الذي هو أكثر أهمية من A.

في نظام Big-Endian ، يكون النظامان متكافئين. أما في نظام Little-Endian ، فالأمر مختلف، حيث يكون الرمزان معكوسين. لذا، ولتجنب أي لبس، من المهم تحديد الترتيب المستخدم عند الإشارة إلى الترميز. ستستخدم هذه المقالة نظامًا شائعًا، وهو إضافة اللاحقة "8888" للدلالة على وجود 4 وحدات 8 بت، أو "32" للدلالة على وجود وحدة 32 بت.

محول تمثيل RGBA
ترتيب البايتات الصغيرترتيب البايغ-إنديان
RGBA8888ABGR32RGBA32
ARGB32BGRA8888ARGB8888
RGBA32ABGR8888RGBA8888

RGBA8888

في OpenGL ورسومات الشبكة المحمولة (PNG)، يُستخدم ترتيب البايت RGBA، حيث تُخزّن الألوان في الذاكرة بحيث يكون اللون الأحمر (R) في أدنى عنوان، يليه الأخضر (G)، ثم الأزرق (B)، وأخيراً الأبيض (A). في بنية little endian، يُعادل هذا الترتيب ABGR32. [ 1 ]

في العديد من الأنظمة عندما يكون هناك أكثر من 8 بتات لكل قناة (مثل 16 بت أو الفاصلة العائمة)، يتم تخزين القنوات بترتيب RGBA، حتى لو تم تخزين قنوات 8 بت بترتيب آخر.

ARGB32

يتم ترتيب القنوات في الذاكرة بطريقة تجعل العدد الصحيح غير الموقع ذو 32 بت يحتوي على عينة ألفا في أعلى 8 بتات، متبوعة بعينة اللون الأحمر، ثم عينة اللون الأخضر، وأخيراً عينة اللون الأزرق في أدنى 8 بتات:

تخطيط نموذجي في بكسل نموذجي 32 بت لكل بكسل
تخطيط نموذجي في بكسل نموذجي 32 بت لكل بكسل

تُعبّر قيم ARGB عادةً باستخدام 8 أرقام سداسية عشرية ، حيث يُمثّل كل زوج من هذه الأرقام قيم قنوات ألفا والأحمر والأخضر والأزرق على التوالي. على سبيل المثال، 80FFFF00يُمثّل اللون الأصفر المعتم بنسبة 50.2% (غير مضروب مسبقًا). 80القيمة السداسية العشرية، وهي 128 بالنظام العشري، تُمثّل قيمة ألفا بنسبة 50.2% لأن 128 تُساوي تقريبًا 50.2% من القيمة القصوى 255 (FF سداسي عشري). لفهم القيمة بشكل أفضل 80FFFF00، يُمثّل الرقم الأول FFالقيمة القصوى للون الأحمر، والثاني FFيُمثّل اللون الأخضر، بينما يُمثّل الرقم الأخير 00القيمة الدنيا للون الأزرق (أي لا وجود للأزرق). بالتالي، ينتج عن جمع الأحمر والأخضر اللون الأصفر. في حال عدم استخدام قيمة ألفا، يُمكن اختصار القيمة إلى 6 أرقام ،RRGGBB ولذلك تم اختيار وضعها في البتات العليا. اعتمادًا على السياق، يتم وضع حرف ألفا 0xأو علامة (#) قبل الأرقام السداسية العشرية.

أصبح هذا التصميم شائعًا عند إدخال نظام الألوان ذي 24 بت (ونظام RGBA ذي 32 بت) في أجهزة الكمبيوتر الشخصية. في ذلك الوقت، كان من الأسرع والأسهل بكثير على البرامج التعامل مع وحدة واحدة ذات 32 بت مقارنةً بأربع وحدات ذات 8 بت.

في أنظمة الترتيب الصغير (little-endian)، يُعادل هذا ترتيب بايتات BGRA. أما في أنظمة الترتيب الكبير (big-endian)، فيُعادل ترتيب بايتات ARGB.

RGBA32

في بعض البرامج المصممة لأجهزة ذات ترتيب البايتات الكبير، مثل Silicon Graphics ، كانت الألوان تُخزن في 32 بت، على غرار ARGB32، ولكن مع وجود قناة ألفا في البتات الثمانية السفلية بدلاً من العلوية. على سبيل المثال، 808000FFسيكون اللون الأحمر والأخضر: 50.2%، والأزرق: 0%، وقناة ألفا: 100%، وهو اللون البني. هذا ما ستحصل عليه إذا تمت قراءة بيانات RGBA8888 ككلمات على هذه الأجهزة. يُستخدم هذا التنسيق في Portable Arbitrary Map و FLTK ، ولكنه نادر الاستخدام عمومًا.

تخطيط بكسل RGBA

يتم تخزين البايتات في الذاكرة على جهاز صغير النهاية بالترتيب ABGR.

انظر أيضاً

مراجع

  1. "مواصفات رسومات الشبكة المحمولة (PNG) (الطبعة الثانية)" . www.w3.org . تم الاطلاع عليه بتاريخ 25 نوفمبر 2021 .
  2. مرجع بنية ألوان XAML من مايكروسوفت MSDN (XAML/WPF/Silverlight)، بما في#aarrggbbذلكsc# scA,scR,scG,scB