السلام عليكم
فكرت في كتابة هذا الموضوع بعد ان حاولت قراءة صورة من نوع bmp في الموضوع الذي طرحه الاخ حسن ..
لكن اكتشفت أن هناك العديد من المفاهيم الاساسية التي يجب علينا معرفتها قبل ان نخوض في مسالة قراءة صور bmp .
لان هذه المفاهيم تفيدنا حتى عندما نريد قراءة صور اخرى مثل pcx او tga على سبيل المثال .
هذا الموضوع للمناقشة .. اتمنى ان نغطي جانب كبير من هذا الموضوع .
وسأحاول ان اطرح ما فهمته .... وليس كل ما اقوله متأكد من صحته ..
اولا :
الصورة قد تكون
1 بت
عندئذ الصورة مكونة من لونين .. اسود و ابيض .. يعني حتى الرمادي لايوجد ..
البكسل ذو الرقم واحد يعني لون ابيض ..
ذو الرقم صفر يعني لون اسود
يا اسود يا ابيض ,,
افتح اي صورة بالرسام ... احفظها على هيئة
monochrome bitmap
,,,
الصورة من نوع 8بت بتدرج رمادي ..

كل بكسل يحتوي على 8بت .. يعني بايت واحد ..
4 بت
عندئذ تستخدم pallet او ما يسمى بجدول الالوان ..
يوجد لدينا 16 لون ... 2^4
تخزن على شكل جدول
صورة

ايضا نفس الامر مع 8 بت .. لكن تصبح الالوان 2^8 = 256 لون
صورة

اما في الصورة ذات الـ 16 بت .. حينها يكون عدد الالوان ضخم .. 2^16 لون .. عندنا اربع قنوات .. RED, GREEN,BLUE كل قناة تمثل 5 بت (من0 الى 31 ) وقناة الفا A لها بت واحد ..
يصير المجموع 16 بت .. اي 2 بايت .
وفي 24 بت .. ينتج لدينا RGB .. حيث كل قناة تمثل بايت .. اذا المجموع ثلاث بايت لكل بكسل .
كل قناة من 0الى255 ..
اما 32 بت .. نفس 24 بت لكن تزيد عليها بـ 8بت .. تمثل قناة الفا ..

هممم ..
لكن .. قد تكون الصورة مضغوطة .. او غير مضغوطة .. اذا كانت مضغوطة .. ماهي الخوارزمية التي تستخدمها ..
هل هي /
LZW
RLE
او كما في الصور التي من نوع JPEG .. حيث تتبع خوارزمية اخرى في الضغط .
اذا كانت غير مضغوطة .. تحفظ على الطريقة التقليدية و تسمى RAW
لايوجد خوارزمية للضغط .. نحفظ محتويات كل بايت في ملف ..
لايوجد لدي المزيد لاقوله ... لكن ..
من يعرف شيء عن بعض تلك الخوارزميات المستخدمة للضغط .
كيف نحصل على PALLET لكل صورة .. اذا كانت تحوي جدول للالوان .. دون دوال جاهزة ..
هل نستطيع ان نطبق مثال .. بسيط جدا .. مثلا نكتب الى ملف بيانات صورة ما ,,, ثم نقرأ ذلك الملف .,,
يعني مثلا
unsigned long data[200]={0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,......};ثم نخزن لون كل بكسل .. في اخر الملف ..
تم نعرض محتويات ذلك الملف .. كما نعرض محتوى اي ملف ..
ونضع امتداد الملف AR2 اختصار لـ ARAB TEAM 2000 :)
اعتقد الامر ممتع ...
المصدر الي استفدت منه ..
http://astronomy.swin.edu.au/~pbourke/dataformats/bitmaps/
ننتظر معلومات اكثر .. :(

