ما هو ملف DIB؟
الصورة النقطية المستقلة عن الجهاز (DIB) هي ملف صورة نقطية مشابه في هيكله لملفات الصور النقطية القياسية BMP. يحتوي على جدول ألوان يصف تعيين ألوان RGB لقيم البكسل. يتيح ذلك لبنك دبي الإسلامي تمثيل الصورة على أي جهاز. يمكن فتحه مع جميع التطبيقات تقريبًا التي يمكنها فتح ملف BMP قياسي على نظام Windows بالإضافة إلى macOS. DIB هي ملفات ثنائية ولها تنسيق ملف معقد مشابه لـ BMP. صور DIB مستقلة عن قدرات الإخراج الخاصة بأجهزة العرض من حيث عمق اللون والبكسل في البوصة.
مواصفات تنسيق ملف DIB
يحتوي DIB على معلومات الألوان والأبعاد التالية:
- تنسيق اللون للجهاز الذي تم إنشاء الصورة المستطيلة عليه.
- دقة الجهاز الذي تم إنشاء الصورة المستطيلة عليه.
- لوحة الجهاز الذي تم إنشاء الصورة عليه.
- مصفوفة من البتات تعين ثلاثة توائم الأحمر والأخضر والأزرق (RGB) إلى وحدات البكسل في الصورة المستطيلة.
- معرّف ضغط البيانات الذي يشير إلى مخطط ضغط البيانات (إن وجد) المستخدم لتقليل حجم مصفوفة البتات.
تنسيق كتلة البيانات DIB
يأتي DIB في سياق كتلة الذاكرة مقارنة بملفات .DIB المخزنة على القرص. تتكون كتلة الذاكرة من بنية تتوافق مع مواصفات Windows API الخاصة بـ DIBs. يتكون بنك دبي الإسلامي الفعلي من:
- رأس
- لوحة الألوان
- بيانات البكسل
عمليًا ، يتم العمل باستخدام بيانات اللوحة والرأس والصور كما لو كانت ثلاث كتل منفصلة من الذاكرة. يتم تعيين مقبض لهذه الكتلة الشائعة من الذاكرة باستخدام GlobalAlloc ويُعرف باسم HDIB ، والذي يُستخدم لاستخراج بيانات الرأس وجدول الألوان والبكسل والعمل معها.
الهياكل
يتم تمثيل المعلومات الواردة في بنك دبي الإسلامي من خلال هياكل مختلفة. وتشمل هذه:
معلومات BITMAPInfo - تحدد معلومات الأبعاد واللون لـ DIBs
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO, *LPBITMAPINFO, *PBITMAPINFO;
يتكون من BITMAPINFOHEADER:
typedef struct tagBITMAPINFOHEADER {
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
متبوعًا بهيكلان RGBQAD أو أكثر.
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
بتات البيانات
بت | الوصف |
---|---|
تنسيق 1 بت (أحادي اللون) | تتكون الصور النقطية أحادية اللون من لونين (أبيض وأسود). نظرًا لهذا العدد المحدود من الألوان ، تشغل هذه الصور النقطية مساحة أقل على القرص. تقوم bitBitCount بإرجاع صواب أو خطأ لتمثيل كلا اللونين. تتخطى معظم التطبيقات اللوحة تمامًا إذا كانت bitBitCount == 1. |
تنسيق 4 بت (VGA أو 16 لونًا) | يمثل كل بايت من بيانات الصورة وحدتي بكسل و bitBitCount == 4. تمثل هذه البتات لون البكسل بالترتيب التنازلي. |
تنسيق 8 بت (256 لونًا) | يمكن أن يمثل تنسيق 8 بت هذا 256 لونًا كحد أقصى. يمثل كل بايت في مصفوفة بيانات الصورة النقطية بكسلًا واحدًا. قيمة هذا البايت هي رقم إدخال لوحة الألوان الذي سيتم استخدامه من الإدخالات البالغ عددها 256 كما يمثلها bmciColors. |
تنسيق 24 بت (TrueColor) | يمكن أن تحتوي هذه الصور النقطية على حد أقصى يبلغ 2 ^ 24 لونًا (biBitCount == 24). يمثل كل تسلسل ثلاثي البايت في مصفوفة بيانات الصورة النقطية الكثافة النسبية للألوان الأساسية الثلاثة للبكسل. يتم وصف الأشكال على أنها قيم تتراوح من 0 إلى 255 ويتم تخزينها في وحدات البايت الثلاثة بالترتيب الأزرق والأخضر والأحمر. هذا تمييز مهم ، لأن معظم الإشارات إلى الألوان في Windows تستخدم الترتيب المعاكس: أحمر / أخضر / أزرق ، لذا فكر في “BGR” عند العمل مع صور TrueColor بدلاً من “RGB”. يمكن تحديد لوحة الألوان لتسريع عملية الرسم لنظام التشغيل Windows ، وفي هذه الحالة لن تكون قيمة biClrUsed 0. ولكن كما ترى ، ليست هناك حاجة إليها ، نظرًا لأن بيانات البكسل نفسها تحتوي على معلومات اللون. |
تنسيق 32 بت | الصور ذات 32 بت بحد أقصى 2 ^ 24 لونًا (biBitCount == 24). |