Fayl formatlari
BMP nima? Bitmap formati batafsil tushuntirilgan
BMP Windows ning siqilmagan, yoʻqotishsiz bitmap formatidir. Uning sarlavha tuzilishi, rang chuqurligi, cheklovlari va fayllarni qanday kichraytirish mumkinligini tushuntiramiz.
Muallif: Hemen Dönüştür Editör EkibiEʼlon qilingan: 7 daqiqa oʻqish

BMP Windows olamidagi eng qadimgi va eng oddiy rasm formatlaridan biri. BMP fayl odatda piksellarni hech qanday siqishsiz, qatorma-qator diskka yozadi. Bu soddalik uni oʻqish uchun oson va yoʻqotishsiz qiladi, xuddi shu soddalik esa fayllarni ulkan qilib yuboradi. Bu maqolada BMP qayerdan kelib chiqqani, fayl ichida nima borligi, rang chuqurligi va shaffoflik tafsilotlari, bugun u bilan qayerda uchrashish mumkinligi va BMP fayllarni qulayroq formatlarga qanday aylantirish koʻrib chiqiladi.
BMP nima?
BMP (bitmap, kengaytmasi .bmp) rastrli, piksellarga asoslangan rasm fayl formatidir. Texnik hujjatlarda u DIB, yaʼni qurilmaga bogʻliq boʻlmagan bitmap (device-independent bitmap) deb ham ataladi. "Qurilmaga bogʻliq emas" degani rasm qaysi videokarta yoki printerda yaratilganidan qatʼi nazar bir xil talqin qilinishi mumkinligini bildiradi: fayl ranglarini dekodlash uchun zarur maʼlumotni oʻz sarlavhasi va rang jadvalida olib yuradi.
Microsoft ning Win32 hujjatlariga koʻra, bitmap fayl BITMAPFILEHEADER tuzilmasi bilan boshlanadi, undan keyin BITMAPINFOHEADER, BITMAPV4HEADER yoki BITMAPV5HEADER, soʻng ixtiyoriy rang jadvali va nihoyat piksel maʼlumotlari keladi. MIME turi image/bmp.
Qisqacha tarix: Windows va OS/2 dan bugungi kungacha
BMP 1980 yillar oxirida Microsoft va IBM ning Windows va OS/2 ustidagi qoʻshma ishidan kelib chiqqan. Windows 1.0 davridagi bitmaplar chiqish qurilmasiga kuchli bogʻliq edi; qurilmaga bogʻliq boʻlmagan shakl 1990 yilda Windows 3.0 bilan keng tarqaldi. OS/2 Presentation Manager uchun belgilangan 12 baytlik BITMAPCOREHEADER tufayli odamlar hanuz "OS/2 BMP" fayllar haqida gapiradi.
Yillar davomida format sarlavha oxiriga yangi maydonlar qoʻshish orqali kengaytirildi. Library of Congress format tavsifiga koʻra, 5-versiya 1998 yilda Windows 98 bilan kelgan va faylga ICC rang profillarini yozish imkonini bergan. Bugungi keng tarqalgan sarlavha oʻlchamlari:
| Sarlavha | Oʻlcham | Asosiy qoʻshimcha |
|---|---|---|
| BITMAPCOREHEADER | 12 bayt | OS/2 1.x bilan mos asosiy tuzilma |
| BITMAPINFOHEADER | 40 bayt | Windows 3.0 dan beri eng keng tarqalgan sarlavha; siqish va aniqlik maydonlari |
| BITMAPV4HEADER | 108 bayt | Rang niqoblari, alfa niqobi va rang fazosi maʼlumotlari |
| BITMAPV5HEADER | 124 bayt | Joylangan yoki bogʻlangan ICC profillari, renderlash maqsadi |
Oʻquvchi dasturlar qaysi sarlavha ishlatilayotganini uning birinchi maydonidagi oʻlcham qiymatidan aniqlaydi. Bu eski dasturlarga yangi maydonlarni eʼtiborsiz qoldirib, asosiy qismni baribir oʻqish imkonini beradi.
BMP fayl ichida nima bor
Fayl sarlavhasi va "BM" imzosi
Har bir BMP fayl 14 baytlik fayl sarlavhasi bilan boshlanadi va uning birinchi ikki bayti ASCII dagi BM belgilari (oʻn oltilikda 42 4D). Sarlavha faylning umumiy hajmini va piksel maʼlumotlari boshlanadigan bayt siljishini saqlaydi. Windows almashinuv buferiga qoʻyilgan DIB (CF_DIB formati) bu 14 baytni tashlab yuboradi va toʻgʻridan-toʻgʻri maʼlumot sarlavhasi bilan boshlanadi.
Maʼlumot sarlavhasi
Maʼlumot sarlavhasi kenglik, balandlik, piksel boshiga bitlar soni (biBitCount), siqish turi, gorizontal va vertikal aniqlik (metrga piksellarda) hamda rang jadvalida ishlatilgan ranglar sonini saqlaydi.
Rang jadvali (palitra)
Piksel boshiga 8 bit yoki undan kam boʻlgan rasmlarda piksel rang emas, balki rang jadvalidagi indeksdir. Microsoft hujjatlaridagi misolda 16 rangli 32x32 bitmapning piksel massivi 32 x 32 x 4 = 4096 bit, chunki 16 rangga murojaat qilish uchun 4 bit yetarli.
Piksel maʼlumotlari: pastdan yuqoriga qatorlar va 4 baytlik tekislash
BMP ning ikkita gʻayrioddiy xususiyati bor. Birinchidan, agar balandlik musbat boʻlsa, qatorlar pastdan yuqoriga saqlanadi: fayldagi birinchi qator rasmning eng pastki qatori. Manfiy balandlik qatorlarni yuqoridan pastga saqlaydi, ammo bunday rasmlarni siqib boʻlmaydi. Ikkinchidan, har bir qator 4 baytga karrali boʻlguncha toʻldiriladi. Microsoft qator uzunligini (stride) quyidagicha beradi:
stride = ((width * bitCount + 31) & ~31) >> 3
imageSize = |height| * stride
24 bitli 1920x1080 rasm uchun har bir qator 1920 x 3 = 5 760 bayt (allaqachon 4 ga karrali), shuning uchun piksel maʼlumotlari 5 760 x 1 080 = 6 220 800 bayt. 54 baytlik sarlavhalar bilan fayl taxminan 6,2 MB boʻladi. Xuddi shu rasm JPG da odatda buning kichik bir qismini tashkil qiladi.
Rang chuqurligi, siqish va shaffoflik
BITMAPV5HEADER hujjatlari piksel boshiga 1, 4, 8, 16, 24 va 32 bitni belgilaydi (0 qiymati chuqurlik joylangan JPEG yoki PNG maʼlumotlaridan olinishini bildiradi). 1 bit qora-oq, 4 bit 16 rang, 8 bit esa 256 rangli palitra. 24 bitda har bir piksel koʻk, yashil, qizil tartibidagi uch bayt.
Siqish maydoni quyidagi qiymatlarni olishi mumkin:
- BI_RGB: siqilmagan. Amalda BMP fayllarning mutlaq koʻpchiligi.
- BI_RLE8 va BI_RLE4: 8 bitli va 4 bitli palitrali rasmlar uchun oddiy takrorlanish uzunligi kodlash (RLE). Katta tekis sohalar uchun foydali, fotosuratlar uchun deyarli befoyda.
- BI_BITFIELDS: siqish emas; niqoblar 16 bitli va 32 bitli piksellarda qizil, yashil va koʻk bitlar qayerda joylashganini belgilaydi (masalan, RGB 565).
- BI_JPEG va BI_PNG: bitmap ichida JPEG yoki PNG maʼlumotlariga ruxsat beradi. Umumiy maqsadli koʻruvchilar kamdan-kam qoʻllab-quvvatlaydi.
Shaffoflik BMP ning eng nomuvofiq sohasi. V4 va V5 sarlavhalaridagi alfa niqobi 32 bitli pikselning toʻrtinchi baytini shaffofsizlik sifatida belgilashi mumkin, ammo klassik 32 bitli BMP da bu bayt ishlatilmaydigan deb taʼriflangan va koʻplab dasturlar uni eʼtiborsiz qoldiradi. Shuning uchun bir dasturda shaffof koʻringan, boshqasida esa qora fonda turgan 32 bitli BMP gʻayrioddiy holat emas. Agar shaffoflik kerak boʻlsa, PNG ancha xavfsizroq tanlov.
Tizimlar, brauzerlar va dasturlarda qoʻllab-quvvatlash
BMP deyarli hamma joyda ochiladi. Windows ning oʻrnatilgan koʻruvchilari va Paint, macOS dagi Preview va keng tarqalgan Linux koʻruvchilari uni oʻqiydi. MDN ning rasm formatlari qoʻllanmasi BMP Chrome, Edge, Firefox, Opera va Safari ning barcha versiyalarida qoʻllab-quvvatlanishini koʻrsatadi. Xuddi shu qoʻllanma siqilmagan BMP fayllar PNG yoki JPG ga nisbatan juda katta ekanini va veb-sayt mazmuni uchun odatda ulardan qochish kerakligini ham taʼkidlaydi.
Bugun BMP qayerda ishlatiladi?
- Windows ilovalari resurslari va eski dasturlar: asboblar paneli rasmlari, oʻrnatish ustasi grafikasi va baʼzi oʻyin resurslari hanuz BMP.
- Oʻrnatilgan tizimlar va mikrokontrollerlar: displeyli qurilmaga JPEG dekoderi kerak emas; piksel maʼlumotlarini toʻgʻridan-toʻgʻri ekranga nusxalash mumkin.
- Sanoat kameralari, skanerlar va sinov vositalari: xom, yoʻqotishsiz natija kerak boʻlganda BMP oddiy oraliq format.
- Taʼlim: sarlavhasi bor-yoʻgʻi bir necha oʻn baytdan iborat boʻlgani uchun BMP koʻpincha tasvirga ishlov berish kurslarida talabalar birinchi boʻlib oʻqiydigan va yozadigan format.
Kuchli va zaif tomonlari
| Kuchli tomonlari | Zaif tomonlari |
|---|---|
| Yoʻqotishsiz; piksel qiymatlari hech qachon oʻzgarmaydi | Siqilmagan, shuning uchun fayllar juda katta |
| Oʻqish va yozish juda oson, protsessorga yuk yoʻq | Shaffoflik nomuvofiq qoʻllab-quvvatlanadi |
| Deyarli har bir operatsion tizim va brauzerda ochiladi | Metamaʼlumotlarni (EXIF, tavsiflar) zaif qoʻllab-quvvatlaydi |
| Palitra rejimlari resurslari kam qurilmalarga mos | Veb, elektron pochta va yuklash shakllari uchun noqulay |
Keng tarqalgan muammolar va ularni hal qilish
Fayl elektron pochta yoki yuklash shakli uchun juda katta
Bu eng keng tarqalgan muammo. Fotosuratlar va skanlar uchun BMP ni JPG ga aylantirish odatda hajmni bir tartib yoki undan ham koʻproq kamaytiradi. Skrinshotlar, diagrammalar yoki matnli har qanday narsa uchun BMP ni PNG ga aylantirish yaxshiroq: PNG ham yoʻqotishsiz, lekin siqilgan va JPG keskin qirralar atrofida hosil qiladigan shovqinni qoʻshmaydi.
32 bitli BMP qora fon bilan koʻrinadi
Dastur alfa baytini tanimaydi yoki notoʻgʻri oʻqiydi. PNG ga aylantirish odatda muammoni hal qiladi. Shaffoflikka ega boʻlmagan JPG ga oʻtkazganda shaffof sohalar oq yoki siz tanlagan rang bilan toʻldiriladi.
Rasm teskari yoki qiyshiq
Oʻzingiz yozgan oʻquvchi dasturda bu odatda ikki xatodan kelib chiqadi: qatorlar pastdan yuqoriga saqlanishini eʼtiborsiz qoldirish yoki har bir qator oxiridagi toʻldiruvchi baytlarni oʻtkazib yubormaslik. Yuqoridagi stride formulasidan foydalanish va balandlik ishorasini tekshirish ikkalasining ham oldini oladi.
Dastur BMP ni ochishdan bosh tortadi
RLE siqishli, BI_BITFIELDS li yoki joylangan JPEG/PNG maʼlumotli BMP fayllarni baʼzi oddiy oʻquvchilar qoʻllab-quvvatlamaydi. Siqilmagan 24 bitli BMP sifatida qayta saqlash yoki PNG ga aylantirish moslik muammosini bartaraf qiladi.
Konvertatsiya boʻyicha maslahatlar
- Fotosuratlar uchun JPG, grafika uchun PNG: BMP dan chiqishda odatiy qoida amal qiladi. Veb uchun rasm konvertorida WebP yoki AVIF ni ham tanlashingiz mumkin.
- Sifatni yuqori tuting: BMP yoʻqotishsiz boʻlgani uchun 85-90% JPG sifati asl nusxadan ajratish qiyin boʻlgan natija beradi.
- Kerak boʻlsa kichraytiring: agar fayl hali ham katta boʻlsa, piksel oʻlchamlarini kamaytiring yoki maqsadli hajmga erishish uchun rasmni siqish vositasidan foydalaning.
- Teskari yoʻnalishda: agar oʻrnatilgan qurilma yoki eski dastur BMP talab qilsa, rasm konvertorida maqsad sifatida BMP ni tanlang. Vositalarimiz standart siqilmagan 24 bitli BMP yozadi; shaffof sohalar siz tanlagan fon rangiga tekislanadi.
BMP konvertatsiya sahifalarimiz brauzeringizda ishlaydi: fayl yuklanmaydi va hech qachon qurilmangizdan chiqmaydi.
Koʻp beriladigan savollar
BMP va DIB bir narsami?
Amalda ha. DIB Windows xotirada va almashinuv buferida ishlatadigan, qurilmaga bogʻliq boʻlmagan bitmap tuzilmasi; BMP fayl esa oldiga 14 baytlik fayl sarlavhasi qoʻshilgan xuddi shu tuzilma.
BMP yoʻqotishsizmi?
Ha. Siqilmagan va RLE bilan siqilgan BMP fayllar piksel qiymatlarini aynan saqlaydi. Yagona istisno joylangan JPEG maʼlumotli kamyob BMP lar.
BMP ni PNG ga aylantirish sifatni yoʻqotadimi?
Yoʻq. PNG ham yoʻqotishsiz; rasm bir xil qoladi va faqat siqilgani uchun kichrayadi.
BMP ni veb-saytda ishlatsa boʻladimi?
Brauzerlar BMP ni koʻrsatadi, lekin fayllar keraksiz katta va sahifalarni sekinlashtiradi. Veb uchun JPG, PNG, WebP yoki AVIF dan foydalaning.
BMP shaffoflikni qoʻllab-quvvatlaydimi?
32 bitli BMP nazariy jihatdan alfa kanalini olib yura oladi, ammo dasturlar uni izchil qoʻllab-quvvatlamaydi. Shaffoflik kerak boʻlganda PNG xavfsizroq tanlov.


