תמונת BMP (.bmp)
Microsoft תקןBitmap Image File (BMP) הוא פורמט הגרפיקה הרסטרית הבסיסי הבלתי-תלוי בהתקן של מיקרוסופט, המאחסן שורות סריקה לא דחוסות או דחוסות בשיטת RLE עם תאימות ישירה לפריים-באפר של חומרה.
המר BMP ל-PNG
ממיר חינמי מ-BMP ל-PNG פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.
בדיקה ומטא-דאטה
מערכות הפעלה ומנתחי קבצים מזהים קבצי BMP על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי BMP על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
42 4Dייצוג ASCII: BM
תקינה: Microsoft Windows Device-Independent Bitmap (DIB) Architecture
מפרט טכני
| ארכיטקטורת מעטפת | BITMAPFILEHEADER followed by BITMAPINFOHEADER (DIB) and raster pixel array |
| דחיסה | Uncompressed raw scanlines, or optional BI_RLE8 / BI_RLE4 run-length encoding |
| סדר בתים (Endianness) | Little-Endian (Intel x86 byte order) |
| מרחבי צבע | Device Dependent RGB, sRGB (BITMAPV5HEADER embedded) |
| ערוצים ומבנה | 1-bit monochrome, 4-bit / 8-bit paletted, 16-bit, 24-bit RGB, or 32-bit RGBA |
| ממדים מרביים | 2,147,483,647 x 2,147,483,647 pixels (signed 32-bit integer) |
| שקיפות | 32-bit BGRA alpha mask supported in modern BITMAPV3HEADER and V5HEADER formats |
| הזרמה ופרוגרסיביות | Non-streamable; scanlines stored upside-down (bottom-up) unless height is negative |
מטריצת השוואה טכנית: BMP מול מתחרים
| תכונה טכנית | BMP (נוכחי) | PNG | TIFF | JPG |
|---|---|---|---|---|
| מצב דחיסה | לא דחוס / RLE מינימלי | Deflate ללא אובדן (~קטן ב-70%) | לא דחוס / LZW / Zip | DCT אובדני (~קטן ב-90%) |
| מהירות פענוח | העתקת זיכרון מיידית | דורש פענוח Deflate | דורש פענוח LZW/ZIP | דורש חישוב IDCT |
| סידור שורות סריקה | מלמטה למעלה (הפוך) | מלמעלה למטה | מלמעלה למטה / רצועות | בלוקי MCU מלמעלה למטה |
| התאמה לווב | גרועה מאוד (מטענים מנופחים) | מעולה לגרפיקה | גרועה (הוצאה לאור שולחנית) | מעולה לצילום |
מצבי שיחשות נפוצים ומדריך שחזור הקסדצימלי (Hex)
התמונה מרונדרת כשהיא גזורה באלכסון או מוטה בזווית.
גורם שורש: חישוב ריפוד שורות שגוי (כשל בריפוד כל שורת סריקה לגבול של 4 בייט).
התאוששות: קידוד מחדש באמצעות File2File Image Converter לאכיפת מרווח שורות סריקה תקני של 32 סיביות.
ניתוח אבטחה ווקטורי התקפה על מנתחים (Parsers)
מפענחי BMP סובלים לעיתים קרובות מקריאות יתר של חוצץ בעת הקצאת זיכרון בהתבסס על מימדי כותרת DIB בלתי מהימנים.
ווקטורי תקיפה ידועים
- חריגת מספר שלם בחישוב רוחב * גובה * bpp המוביל להקצאת ערימה קטנה ולכתיבה מחוץ לגבולות הזיכרון.
- רצפי בריחה של מקטעי אורך ריצה RLE8/RLE4 פגומים הגורמים לכתיבות זיכרון מעבר לחוצץ שהוקצה.
- מניעת שירות באמצעות הקצאת זיכרון בגודל של מספר ג'יגה-בייט שמופעלת על ידי מימדי כותרת מעוوَתים.
השיטות המומלצות להגנה:
היסטוריה ואבני דרך
יתרונות מרכזיים
- אפס פגיעה בדחיסה: אחסון פיקסלים מדויק בסיביות (bit-exact) של 100% ללא ארטיפקטי דחיסה כלל.
- תאימות מערכת הפעלה מובנית ואוניברסלית בכל הגרסאות של Windows, Linux ו-macOS.
- מורכבות פענוח זניחה הופכת אותו לאידיאלי עבור מיקרו-בקרים משובצים (embedded microcontrollers) ולהוראת תכנות גרפיקה.
מגבלות טכניות וחסרונות
- גדלי קבצים עצומים עקב היעדר דחיסת אנטרופיה מודרנית כמו DEFLATE או קידוד Huffman.
- לא יעיל להעברה באינטרנט או להפצה ברשתות סלולריות.
- סדר שורות סריקה מלמטה למעלה דורש היפוך שורות אנכי בצינורות עיבוד גרפיים מודרניים מלמעלה למטה.
עובדות טכניות מעניינות
- קובצי BMP מאחסנים שורות סריקה של תמונה מהתחתית למעלה (מלמטה למעלה) כברירת מחדל בשל מערכת הצירים הקרטזית המתמטית שבה השתמשו ב-OS/2.
- אם ערך הגובה בכותרת ה-BMP מוגדר למספר שלילי, התמונה מנוענת ישר (מלמעלה למטה).
- כל שורת סריקה בקובץ BMP חייבת להיות מרופדת באפסים לכפול של 4 בייט (יישור גבול של 32 סיביות).
שאלות טכניות נפוצות
מדוע קובצי BMP כל כך גדולים?
קובצי BMP שומרים ערכי צבע גולמיים ולא דחוסים עבור כל פיקסל בודד, בעוד שפורמטים כמו PNG דוחסים נתונים אלו מבלי לאבד שום איכות.
האם BMP תומך בשקיפות?
כן. קובצי BMP בגודל 32 סיביות (המשתמשים ב-BITMAPV3HEADER או חדשים יותר) יכולים לאחסן ערוץ אלפא בן 8 סיביות, אם כי התמיכה משתנה בתוכנות ישנות יותר.
כיצד אוכל להקטין את גודל קובץ ה-BMP?
המרת קובץ BMP ל-PNG באמצעות File2File.app בדרך כלל מקטינה את גודל הקובץ ב-60% עד 85% ללא שום אובדן באיכות הוויזואלית.