سؤال

أنا أدرس getPixel32 () وفئات بيانات BITMAP و BITMAP. في الأساس ، أود أن أعرف كيفية إخراج تتبع بسيط لـ ARGB من قيمة سداسية عشرية.

جانبا ، أنا تحت الانطباع ، الذي أفترضه/آمل أن يكون خطأ ، أن القيم السداسية لا يمكن أن تنتج أكبر عدد من الألوان مثل قيم RGBA. ربما أطلقتني "Web Safe" بفهم الفائدة أو الرغبة في استخدام الألوان التي تنتجها القيم السداسية.

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

المحلول

لاستخراج معلومات اللون ، عليك العمل مع مشغلي bitwise. يتم تخزين الألوان مثل 0xaarrggbb لذلك عليك استخراج هذه الأجزاء. يجب على المقتطف الصغير القيام بالمهمة:

var hex: uint = 0x00ff00ff;
var a: int = (hex >>> 0x18) & 0xff;
var r: int = (hex >>> 0x10) & 0xff;
var g: int = (hex >>> 0x08) & 0xff;
var b: int = hex & 0xff;

trace(a, r, g, b);

اعتمادًا على كيفية تحديد قيم RGBA قد تتغير الإجابة. إذا كنت تستخدم قيم RGBA حيث يتم تحديد كل قناة بواسطة بايت واحد ، فيمكنك التعبير عن الكثير من الألوان كما هو الحال في قيمة السداسي. "قيمة السداسي" الخاصة بك هي عدد صحيح غير موقّع يتكون من 4 بايت. يوجد أيضًا في فلاش نوع الأرقام الذي يتوافق مع 64 بت بحيث يتم التعبير عن كل قناة 8-BYTES بدلاً من واحدة. يمكنك أن تتخيل أن لديك المزيد من الدقة. ومع ذلك ، ربما يتم تعيين شاشتك على "اللون الحقيقي (32 بت)" ولن تكون قادرة على إظهار العديد من الألوان. أنت تتجاوز الدقة المزدوجة (64 بت) وتستخدم الدقة العشرية ، والتي تستخدم في الغالب للحسابات المالية. تتكون كل قيمة من 128 بت مما يجعل 16 بايت لكل قناة. هذا أكثر من 16 مرة ثم عند استخدام تمثيل سداسي عشري. بالطبع هذا أكثر دقة ولكن شاشتك لن تكون قادرة على التعامل معها.

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

صورة 1024 × 768 بدقة 8 بت هي 3072 كيلو بايت في حين أن نفس الصورة 32 بت هي 12288 كيلو بايت في الذاكرة. ستستغرق تلك الصورة نفسها 24576 كيلو بايت باستخدام نوع رقم Flash. لذلك ربما تكون أفضل من البقاء بدقة 8 بت والتي يجب أن تكون كافية في معظم الحالات.

آمل أن يساعدك ذلك ولديك فهم أفضل الآن للصور وهيكلها.

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