Faýl formatlary
BMP näme? Bitmap formaty düşündirilýär
BMP Windows-yň gysylmadyk, ýitgisiz bitmap formatydyr. Onuň sözbaşy gurluşyny, reňk çuňluklaryny, çäklerini we faýllary nädip kiçeltmelidigini düşündirýäris.
Awtor: Hemen Dönüştür Editör EkibiÇap edildi: 7 min okamak

BMP Windows dünýäsindäki iň köne we iň ýönekeý surat formatlarynyň biridir. BMP faýly adatça pikselleri hiç hili gysyşsyz diske setirme-setir ýazýar. Bu ýönekeýlik ony okamagy aňsat we ýitgisiz edýär, şol ýönekeýlik bolsa faýllary ägirt uly edýär. Bu makalada BMP-niň nireden gelendigi, faýlyň içinde näme bardygy, reňk çuňlugynyň we aýdynlygyň jikme-jiklikleri, onuň häzir nirede duş gelýändigi we BMP faýllaryny has amatly formatlara nädip öwürmelidigi düşündirilýär.
BMP näme?
BMP (bitmap, giňeltmesi .bmp) raster, piksel esasly surat faýl formatydyr. Tehniki resminamalarda oňa DIB, ýagny enjama bagly bolmadyk bitmap hem diýilýär. "Enjama bagly bolmadyk" diýmek suratyň haýsy wideokartada ýa-da printerde döredilendigine garamazdan birmeňzeş düşündirilip bilinjekdigini aňladýar: faýl reňklerini açmak üçin gerek maglumatlary öz sözbaşysynda we reňk tablisasynda saklaýar.
Microsoft-yň Win32 resminamalaryna görä, bitmap faýly BITMAPFILEHEADER gurluşy bilen başlaýar, ondan soň BITMAPINFOHEADER, BITMAPV4HEADER ýa-da BITMAPV5HEADER, soňra islege bagly reňk tablisasy we ahyrynda piksel maglumatlary gelýär. MIME görnüşi image/bmp.
Gysgaça taryhy: Windows we OS/2-den häzirki güne çenli
BMP 1980-nji ýyllaryň ahyrynda Microsoft bilen IBM-iň Windows we OS/2 boýunça bilelikdäki işinden döredi. Windows 1.0 döwrüniň bitmaplary çykyş enjamyna köp bagly bolupdy; enjama bagly bolmadyk görnüşi 1990-njy ýylda Windows 3.0 bilen giň ýaýrady. OS/2 Presentation Manager üçin kesgitlenen 12 baýtlyk BITMAPCOREHEADER sebäpli adamlar henizem "OS/2 BMP" faýllary barada gürleýärler.
Ýyllaryň dowamynda format sözbaşynyň ahyryna meýdanlar goşmak arkaly giňeldildi. Library of Congress-iň format beýanyna görä, 5-nji wersiýa 1998-nji ýylda Windows 98 bilen geldi we faýlda ICC reňk profillerini ýazmaga mümkinçilik berdi. Häzirki ýaýran sözbaşy ölçegleri:
| Sözbaşy | Ölçegi | Esasy goşundy |
|---|---|---|
| BITMAPCOREHEADER | 12 baýt | OS/2 1.x bilen gabat gelýän esasy gurluş |
| BITMAPINFOHEADER | 40 baýt | Windows 3.0-dan bäri iň ýaýran sözbaşy; gysyş we çözgüt meýdanlary |
| BITMAPV4HEADER | 108 baýt | Reňk maskalary, alfa maskasy we reňk giňişligi maglumatlary |
| BITMAPV5HEADER | 124 baýt | Goşulan ýa-da baglanan ICC profilleri, görkeziş niýeti |
Okaýjylar haýsy sözbaşynyň ulanylýandygyny onuň birinji meýdanyndaky ölçeg bahasyndan anyklaýar. Bu köne programmalara täze meýdanlary hasaba alman, esasy zatlary okamaga mümkinçilik berýär.
BMP faýlynyň içinde
Faýl sözbaşysy we "BM" goly
Her BMP faýly 14 baýtlyk faýl sözbaşysy bilen başlaýar we onuň ilkinji iki baýty ASCII BM nyşanlarydyr (onaltylykda 42 4D). Sözbaşy faýlyň umumy ölçegini we piksel maglumatlarynyň başlaýan baýt süýşmesini saklaýar. Windows alyş-çalyş buferine goýlan DIB (CF_DIB formaty) bu 14 baýty taşlaýar we göni maglumat sözbaşysy bilen başlaýar.
Maglumat sözbaşysy
Maglumat sözbaşysy ini, beýikligi, piksel başyna bitleri (biBitCount), gysyş görnüşini, keseligine we dikligine çözgüdi (metr başyna pikselde) we reňk tablisasynda ulanylýan reňkleriň sanyny saklaýar.
Reňk tablisasy (palitra)
Piksel başyna 8 bit ýa-da ondan az suratlarda piksel reňk däl-de, reňk tablisasyndaky indeksdir. Microsoft-yň resminamalaşdyran mysalynda 16 reňkli 32x32 bitmapyň piksel massiwi 32 x 32 x 4 = 4096 bit, sebäbi 16 reňke ýüzlenmek üçin 4 bit ýeterlik.
Piksel maglumatlary: aşakdan ýokary setirler we 4 baýtlyk deňleşdirme
BMP-niň iki adaty bolmadyk aýratynlygy bar. Birinjiden, beýiklik položitel bolsa, setirler aşakdan ýokary saklanýar: faýldaky birinji setir suratyň iň aşaky setiridir. Otrisatel beýiklik setirleri ýokardan aşak saklaýar, ýöne beýle suratlary gysyp bolmaýar. Ikinjiden, her setir 4 baýtyň kratnysyna çenli doldurylýar. Microsoft setiriň uzynlygyny (stride) şeýle berýär:
stride = ((width * bitCount + 31) & ~31) >> 3
imageSize = |height| * stride
24 bitli 1920x1080 surat üçin her setir 1920 x 3 = 5 760 baýt (eýýäm 4-üň kratnysy), şonuň üçin piksel maglumatlary 5 760 x 1 080 = 6 220 800 baýt. 54 baýtlyk sözbaşylar bilen faýl takmynan 6,2 MB. Şol surat JPG görnüşinde adatça munuň kiçijik bir bölegi bolýar.
Reňk çuňlugy, gysyş we aýdynlyk
BITMAPV5HEADER resminamasy piksel başyna 1, 4, 8, 16, 24 we 32 bit kesgitleýär (0 bahasy çuňlugyň goşulan JPEG ýa-da PNG maglumatlaryndan gelýändigini aňladýar). 1 bit ak-gara, 4 bit 16 reňk, 8 bit bolsa 256 reňkli palitradyr. 24 bitde her piksel gök, ýaşyl, gyzyl tertipdäki üç baýtdyr.
Gysyş meýdany şu bahalary alyp bilýär:
- BI_RGB: Gysylmadyk. Amalda BMP faýllarynyň aglaba köpüsi.
- BI_RLE8 we BI_RLE4: 8 bitli we 4 bitli palitraly suratlar üçin ýönekeý yzygiderlik uzynlygy kodlamasy. Uly tekiz meýdanlar üçin peýdaly, fotosuratlar üçin diýen ýaly peýdasyz.
- BI_BITFIELDS: Gysyş däl; maskalar 16 bitli we 32 bitli piksellerde gyzyl, ýaşyl we gök bitleriň nirede ýerleşýändigini kesgitleýär (meselem RGB 565).
- BI_JPEG we BI_PNG: Bitmapyň içinde JPEG ýa-da PNG maglumatlaryna rugsat berýär. Umumy maksatly görkezijiler tarapyndan seýrek goldanylýar.
Aýdynlyk BMP-niň iň bir durnuksyz ugrudyr. V4 we V5 sözbaşylaryndaky alfa maskasy 32 bitli pikseliň dördünji baýtyny dykyzlyk hökmünde kesgitläp bilýär, ýöne klassiki 32 bitli BMP-de bu baýt ulanylmaýan diýlip beýan edilýär we köp programmalar ony hasaba almaýar. Şonuň üçin bir programmada aýdyň görünýän, beýlekisinde gara fonda duran 32 bitli BMP geň zat däl. Aýdynlyk gerek bolsa, PNG has ygtybarly saýlawdyr.
Ulgamlarda, brauzerlerde we programmalarda goldaw
BMP diýen ýaly hemme ýerde açylýar. Windows-yň içine gurlan görkezijileri we Paint, macOS Preview we Linux-yň ýaýran görkezijileri ony okaýar. MDN-iň surat formatlary boýunça gollanmasy BMP goldawyny Chrome, Edge, Firefox, Opera we Safari-niň ähli wersiýalarynda görkezýär. Şol gollanma gysylmadyk BMP faýllarynyň PNG ýa-da JPG bilen deňeşdirilende örän uludygyny we web saýt mazmuny üçin umuman ulanmazlygyň gowudygyny hem nygtaýar.
BMP häzir nirede ulanylýar?
- Windows programma çeşmeleri we köne programmalar: Gural paneli suratlary, gurnama ussatlarynyň grafikasy we käbir oýun serişdeleri henizem BMP.
- Içerki ulgamlar we mikrokontrollerler: Ekranly enjama JPEG dekoderi gerek däl; piksel maglumatlaryny göni ekrana göçürip bolýar.
- Senagat kameralary, skanerler we synag gurallary: Çig, ýitgisiz çykyş gerek bolanda BMP ýönekeý aralyk formatdyr.
- Okatmak: Sözbaşysy bary-ýogy birnäçe onlarça baýt bolany üçin BMP köplenç surat işleýiş sapaklarynda talyplaryň okaýan we ýazýan ilkinji formatydyr.
Güýçli we gowşak taraplary
| Güýçli taraplary | Gowşak taraplary |
|---|---|
| Ýitgisiz; piksel bahalary hiç haçan üýtgemeýär | Gysylmadyk, şonuň üçin faýllar örän uly |
| Okamak we ýazmak örän ýönekeý, prosessor çykdajysy ýok | Aýdynlyk goldawy durnuksyz |
| Diýen ýaly ähli operasion ulgamlarda we brauzerlerde açylýar | Metamaglumat goldawy gowşak (EXIF, beýanlar) |
| Palitra tertipleri serişdesi az enjamlara laýyk | Web, e-poçta we ýükleme formalary üçin amatsyz |
Ýygy duş gelýän meseleler we olary çözmek
Faýl e-poçta ýa-da ýükleme formasy üçin gaty uly
Bu iň ýygy mesele. Fotosuratlar we skanlar üçin BMP-ni JPG-e öwürmek adatça ölçegi on esse ýa-da ondan hem köp azaldýar. Ekran suratlary, diagrammalar ýa-da tekstli islendik zat üçin BMP-ni PNG-e öwürmek has gowy: PNG hem ýitgisiz, ýöne gysylan we JPG-iň ýiti gyralaryň töwereginde döredýän galmagalyny goşmaýar.
32 bitli BMP gara fon görkezýär
Programma alfa baýtyny tanamaýar ýa-da nädogry okaýar. PNG-e öwürmek adatça meseläni çözýär. Aýdynlygy bolmadyk JPG-e öwürende aýdyň meýdanlar ak ýa-da siziň saýlan reňkiňiz bilen doldurylýar.
Surat başaşak ýa-da gyşyk
Özüňiz ýazan okaýjyda bu adatça iki ýalňyşlykdan gelip çykýar: setirleriň aşakdan ýokary saklanýandygyny hasaba almazlyk ýa-da her setiriň ahyryndaky doldurma baýtlaryny geçmezlik. Ýokardaky stride formulasyny ulanmak we beýikligiň alamatyny barlamak ikisiniň hem öňüni alýar.
Programma BMP-ni açmakdan ýüz öwürýär
RLE gysyşly, BI_BITFIELDS-li ýa-da goşulan JPEG/PNG maglumatly BMP faýllaryny käbir ýönekeý okaýjylar goldamaýar. Gysylmadyk 24 bitli BMP hökmünde gaýtadan ýatda saklamak ýa-da PNG-e öwürmek gabat gelşik meselesini aýyrýar.
Öwürmek boýunça maslahatlar
- Fotosuratlar üçin JPG, grafika üçin PNG: BMP-den çykanyňyzda adaty düzgün ulanylýar. Web üçin surat öwrüjisinde WebP ýa-da AVIF-i hem saýlap bilersiňiz.
- Hili ýokary saklaň: BMP ýitgisiz bolany üçin 85-90% JPG hili asyl nusgadan tapawutlandyrmak kyn bolan netije berýär.
- Gerek bolsa kiçeldiň: Faýl henizem uly bolsa, piksel ölçeglerini azaldyň ýa-da maksat ölçege ýetmek üçin suraty gysmak guralyny ulanyň.
- Ters ugurda: Içerki enjama ýa-da köne programma BMP gerek bolsa, surat öwrüjisinde maksat hökmünde BMP-ni saýlaň. Gurallarymyz standart gysylmadyk 24 bitli BMP ýazýar; aýdyň meýdanlar siziň saýlan fon reňkiňize ýerleşdirilýär.
BMP öwürmek sahypalarymyz brauzeriňizde işleýär: faýl ýüklenmeýär we hiç haçan enjamyňyzdan çykmaýar.
Köp berilýän soraglar
BMP we DIB şol bir zatmy?
Amalda hawa. DIB Windows-yň ýatda we alyş-çalyş buferinde ulanýan enjama bagly bolmadyk bitmap gurluşydyr; BMP faýly bolsa öňünde 14 baýtlyk faýl sözbaşysy bolan şol gurluşdyr.
BMP ýitgisizmi?
Hawa. Gysylmadyk we RLE bilen gysylan BMP faýllary piksel bahalaryny takyk saklaýar. Ýeke-täk kadadan çykma goşulan JPEG maglumatly seýrek BMP-dir.
BMP-ni PNG-e öwürmek hili peseldýärmi?
Ýok. PNG hem ýitgisiz; surat birmeňzeş galýar we diňe gysylandygy sebäpli kiçelýär.
BMP-ni web saýtda ulanyp bolarmy?
Brauzerler BMP-ni görkezýär, ýöne faýllar ýöne ýere uly we sahypalary haýalladýar. Web üçin JPG, PNG, WebP ýa-da AVIF ulanyň.
BMP aýdynlygy goldaýarmy?
32 bitli BMP nazary taýdan alfa kanalyny saklap bilýär, ýöne programmalar ony durnukly goldamaýar. Aýdynlyk gerek bolanda PNG has ygtybarly saýlawdyr.


