aspose.info
HE

BMP - פורמט קובץ תמונה

עודכן

מהו קובץ BMP?

קבצים בעלי סיומת .BMP מייצגים קובצי Bitmap Image המשמשים לאחסון תמונות דיגיטליות של Bitmap. תמונות אלו אינן תלויות במתאם הגרפי והן נקראות גם פורמט קובץ מפת סיביות עצמאית של מכשירים (DIB). עצמאות זו משרתת את המטרה של פתיחת הקובץ בפלטפורמות מרובות כגון Microsoft Windows ו-Mac. פורמט הקובץ BMP יכול לאחסן נתונים כתמונות דיגיטליות דו מימדיות בפורמט מונוכרום וגם בפורמט צבעוני עם עומקי צבע שונים.

מפרטי פורמט קובץ BMP

מפות סיביות בלתי תלויות בהתקן פועלות ככלי עזר להחלפת מפות סיביות בין מכשירים ויישומים. בשל ההתפתחות המתמשכת של פורמט קובץ זה, המידע הכלול בכותרות יכול להיות שונה בהתאם לגרסה של Bitmap. קובץ מפת סיביות בודד מורכב ממבנים קבועים כמו גם מבנים בגודל משתנה ברצף ספציפי.

מבנים בקובץ Bitmap מסודרים בסדר הבא:

מבנהאופציונליגודלמטרה
כותרת קובץNo14לאחסון מידע כללי על קובץ תמונת הסיביות
DIB HeaderNoFixed-Sizeלאחסון מידע מפורט על תמונת הסיביות ולהגדיר את פורמט הפיקסלים
מסיכות סיביות נוספותכן12 או 16 בתיםכדי להגדיר את פורמט הפיקסלים
פלטת צבעיםחצי אופציונלימשתנה-גודלכדי להגדיר צבעים המשמשים את נתוני תמונת הסיביות
Gap1כןגודל משתנהיישור מבנה
מערך פיקסליםלאגודל-משתנהפורמט פיקסלים מוגדר על ידי כותרת DIB או מסיכות סיביות נוספות.
Gap2כןגודל משתנהיישור מבנה
ICC פרופיל צבעכןגודל משתנהכדי להגדיר את פרופיל הצבע לניהול צבעים

כאשר תמונת מפת סיביות נטענת לזיכרון, היא הופכת למבנה DIB, המשמש את Windows באמצעות ה-GDI API שלה. כותרת הקובץ אינה חלק ממבנה הנתונים הזה. הצבע יכול להכיל גם ערכים של 16 סיביות המהווים אינדקסים ללוח ההתייחסות הנוכחי במקום הגדרות צבע RGB מפורשות. בואו נסתכל על כמה מהם בפירוט, במיוחד הכותרות.

כותרת קובץ מפת סיביות

כותרת קובץ Bitmap דומה לכותרות קבצים אחרות המשמשות לזיהוי הקובץ. מכיוון שישנן גרסאות שונות לפורמט קובץ BMP, 2 הבייטים הראשונים של פורמט הקובץ BMP הם התו “B” ולאחר מכן התו “M” בקידוד ASCII. כל ערכי המספרים השלמים מאוחסנים בפורמט אנדיאן קטן.

offset hexoffset decגודלמטרה
0002 בתיםשדה הכותרת המשמש לזיהוי קובץ ה-BMP וה-DIB הוא 0x42 0x4D בהקסדצימלי, זהה ל-BM ב-ASCII. זה יכול לעקוב אחר ערכים אפשריים.* BM – Windows 3.1x, 95, NT, … וכו’. * BA – OS/2 struct bitmap מערך * CI – OS/2 struct סמל צבע * CP - מצביע צבע קונסט של OS/2 * IC - סמל מבנה OS/2 * PT - מצביע OS/2
0224 בתיםגודל קובץ ה-BMP בבתים
0662 בתיםשמורה; הערך בפועל תלוי באפליקציה שיוצרת את התמונה
0882 בתיםשמורה; הערך בפועל תלוי באפליקציה שיוצרת את התמונה
0A104 בתיםההיסט, כלומר כתובת ההתחלה, של הבית שבו ניתן למצוא את נתוני תמונת הסיביות (מערך הפיקסלים).

כותרת DIB (כותרת מידע מפת סיביות)

המידע המפורט על התמונה מיוצג על ידי כותרת זו. על סמך מידע זה, ייקבע אפליקציה שתשמש להצגת התמונה על המסך. כל הכותרות הללו מכילות שדה DWORD (32 סיביות), המציין את גודלן, כך שאפליקציה יכולה לקבוע בקלות את הכותרת שבה נעשה שימוש בתמונה. זה בעצם נובע מהעובדה שפורמט DIB עבר מספר הרחבות. להלן כותרת DIB עם שדות רשומים.

פלטת צבעים

פלטת צבעים BMP היא מערך של מבנים המציינים את ערכי עוצמת ה-RGB של כל צבע בפלטת הצבעים של התקן תצוגה. כל פיקסל בנתוני מפת הסיביות מאחסן ערך בודד המשמש כאינדקס בפלטת הצבעים. מידע הצבע המאוחסן באלמנט באותו אינדקס מציין את הצבע של אותו פיקסל. זמינות הצבע בקובץ מפת סיביות משתנה כדלקמן:

  • One, 4 ו-8-bit - צפוי להכיל תמיד פלטת צבעים
  • 16, 24 ו-32 סיביות - לעולם אל תכיל פלטות צבעים
  • 16 קבצי BMP ו-32 סיביות - מכילים ערכי מסיכת שדה סיביות במקום פלטת הצבעים

אחסון פיקסלים

פיקסלים של מפת סיביות מאוחסנים כסיביות ארוזות בשורות כאשר הגודל של כל שורה מעוגל כלפי מעלה לכפולה של 4 בתים (DWORD של 32 סיביות) על ידי ריפוד. לא ניתן לחשב ישירות את הכמות הכוללת של בתים הנדרשת לאחסון הפיקסלים של תמונה רק על ידי ספירת הביטים. מכיוון שיש ריפוד מעורב, נדרשת ההשפעה של עיגול כלפי מעלה את הגודל של כל שורה לכפולה של 4 בתים. יש לצרף בתים ריפוד (לאו דווקא 0) לסוף השורות כדי להעלות את אורך השורות לכפולה של ארבעה בתים. כאשר מערך הפיקסלים נטען לזיכרון, כל שורה חייבת להתחיל בכתובת זיכרון שהיא כפולה של 4.

התמונה מתוארת למעשה על ידי ייצוג 32 סיביות DWORDs של מערך הפיקסלים. בדרך כלל פיקסלים מאוחסנים “מלמטה למעלה”, מתחילים בפינה השמאלית התחתונה, עוברים משמאל לימין, ואז שורה אחר שורה מלמטה לחלק העליון של התמונה. פורמטים של Pixel וההשלכות שלהם הם כמפורט להלן:

  • הפורמט של 1 סיביות לפיקסל (1bpp) תומך בשני צבעים שונים, (לדוגמה: שחור ולבן).
  • פורמט ה-2 סיביות לפיקסל (2bpp) תומך ב-4 צבעים נפרדים ומאחסן 4 פיקסלים לבייט אחד, הפיקסל השמאלי ביותר נמצא בשני הביטים המשמעותיים ביותר. כל ערך פיקסל הוא אינדקס של 2 סיביות לטבלה של עד 4 צבעים.
  • הפורמט של 4 סיביות לפיקסל (4bpp) תומך ב-16 צבעים נפרדים ומאחסן 2 פיקסלים לבייט אחד, הפיקסל השמאלי ביותר נמצא בנגיסה המשמעותית יותר. כל ערך פיקסל הוא אינדקס של 4 סיביות לטבלה של עד 16 צבעים.
  • הפורמט של 8 סיביות לפיקסל (8bpp) תומך ב-256 צבעים שונים ומאחסן פיקסל אחד לכל בת אחד. כל בייט הוא אינדקס לטבלה של עד 256 צבעים.
  • פורמט 16 סיביות לפיקסל (16bpp) תומך ב-65536 צבעים שונים ומאחסן פיקסל אחד לכל WORD של 2 בייט. כל מילה יכולה להגדיר את דגימות האלפא, האדום, הירוק והכחול של הפיקסל.
  • פורמט 24 סיביות פיקסל (24bpp) תומך ב-16,777,216 צבעים שונים ומאחסן ערך פיקסל אחד לכל 3 בתים. כל ערך פיקסל מגדיר את הדגימות האדומות, הירוקות והכחולות של הפיקסל (8.8.8.0.0 בסימון RGBAX). ספציפית, לפי הסדר: כחול, ירוק ואדום (8 ביטים לכל דגימה).
  • פורמט ה-32 סיביות לפיקסל (32bpp) תומך ב-4,294,967,296 צבעים שונים ומאחסן פיקסל אחד לכל DWORD של 4 בייט. כל DWORD יכול להגדיר את דגימות האלפא, האדום, הירוק והכחול של הפיקסל.

הפניות

ראו גם