Файл форматтары
BMP дегеніміз не? Bitmap форматы түсіндірмесімен
BMP Windows жүйесінің қысылмаған, шығынсыз растрлық форматы. Оның тақырып құрылымын, түс тереңдігін, шектеулерін және файлдарды қалай кішірейтуге болатынын түсіндіреміз.
Автор: Hemen Dönüştür Editör EkibiЖарияланды: 7 мин оқу

BMP Windows әлеміндегі ең ескі әрі ең қарапайым сурет форматтарының бірі. BMP файлы әдетте пиксельдерді дискіге ешқандай қысусыз жол-жолымен жазады. Бұл қарапайымдылық оны оқуға оңай әрі шығынсыз етеді, бірақ дәл сол қарапайымдылық файлдарды өте үлкен етеді. Бұл мақалада BMP-нің қайдан шыққаны, файлдың ішінде не бар екені, түс тереңдігі мен мөлдірліктің егжей-тегжейі, оның бүгін қайда кездесетіні және BMP файлдарын ыңғайлырақ форматтарға қалай түрлендіруге болатыны қарастырылады.
BMP дегеніміз не?
BMP (bitmap, кеңейтімі .bmp) растрлық, пиксельге негізделген сурет файлының форматы. Техникалық құжаттамада ол DIB, яғни құрылғыға тәуелсіз растрлық сурет деп те аталады. «Құрылғыға тәуелсіз» дегеніміз сурет қай графикалық картада не принтерде жасалғанына қарамастан бірдей түсіндірілетінін білдіреді: файл түстерін декодтауға қажет ақпаратты өз тақырыбы мен түстер кестесінде тасымалдайды.
Microsoft-тың Win32 құжаттамасына сәйкес, bitmap файлы BITMAPFILEHEADER құрылымынан басталады, одан кейін BITMAPINFOHEADER, BITMAPV4HEADER не BITMAPV5HEADER, содан кейін міндетті емес түстер кестесі және соңында пиксель деректері келеді. MIME түрі image/bmp.
Қысқаша тарих: Windows пен OS/2-ден бүгінге дейін
BMP 1980 жылдардың соңында Microsoft пен IBM-нің Windows және OS/2 бойынша бірлескен жұмысынан шықты. Windows 1.0 кезеңіндегі растрлық суреттер шығыс құрылғысына қатты тәуелді болды; құрылғыға тәуелсіз түрі 1990 жылы Windows 3.0-мен бірге кең тарады. OS/2 Presentation Manager үшін анықталған 12 байттық BITMAPCOREHEADER құрылымына байланысты адамдар әлі күнге дейін «OS/2 BMP» файлдары туралы айтады.
Жылдар бойы формат тақырыптың соңына өрістер қосу арқылы кеңейтілді. Library of Congress формат сипаттамасына сәйкес, 5-нұсқа 1998 жылы Windows 98-бен бірге келді және файлға ICC түс профильдерін жазуға мүмкіндік берді. Бүгінгі кең таралған тақырып өлшемдері:
| Тақырып | Өлшемі | Негізгі толықтыру |
|---|---|---|
| BITMAPCOREHEADER | 12 байт | OS/2 1.x-пен үйлесімді негізгі құрылым |
| BITMAPINFOHEADER | 40 байт | Windows 3.0-ден бергі ең кең таралған тақырып; қысу және ажыратымдылық өрістері |
| BITMAPV4HEADER | 108 байт | Түс маскалары, альфа маскасы және түс кеңістігі ақпараты |
| BITMAPV5HEADER | 124 байт | Ендірілген не сілтемелі ICC профильдері, көрсету мақсаты |
Оқу бағдарламалары қай тақырып қолданылып тұрғанын оның бірінші өрісіндегі өлшем мәнінен анықтайды. Бұл ескі бағдарламаларға жаңа өрістерді елемей, негізгі ақпаратты бәрібір оқуға мүмкіндік береді.
BMP файлының ішінде
Файл тақырыбы және «BM» қолтаңбасы
Әр BMP файлы 14 байттық файл тақырыбынан басталады, және оның алғашқы екі байты ASCII BM таңбалары (он алтылықта 42 4D). Тақырып файлдың жалпы өлшемін және пиксель деректері басталатын байттық ығысуды сақтайды. Windows алмасу буферіне орналастырылған DIB (CF_DIB форматы) бұл 14 байтты қамтымайды және бірден ақпарат тақырыбынан басталады.
Ақпарат тақырыбы
Ақпарат тақырыбы енді, биіктікті, пиксельдегі бит санын (biBitCount), қысу түрін, көлденең және тік ажыратымдылықты (метрдегі пиксельмен) және түстер кестесінде қолданылған түстер санын сақтайды.
Түстер кестесі (палитра)
Пиксельге 8 бит не одан аз келетін суреттерде пиксель түс емес, түстер кестесіндегі индекс болады. Microsoft құжаттамасындағы мысалда 16 түсті 32x32 растрлық суреттің пиксель массиві 32 x 32 x 4 = 4096 бит, себебі 16 түсті көрсету үшін 4 бит жеткілікті.
Пиксель деректері: төменнен жоғары жолдар және 4 байттық туралау
BMP-нің екі ерекше қасиеті бар. Біріншіден, биіктік оң болса, жолдар төменнен жоғары қарай сақталады: файлдағы бірінші жол суреттің ең төменгі жолы. Теріс биіктік жолдарды жоғарыдан төмен сақтайды, бірақ мұндай суреттерді қысуға болмайды. Екіншіден, әр жол 4 байттың еселігіне дейін толықтырылады. Microsoft жол ұзындығын (stride) былай береді:
stride = ((width * bitCount + 31) & ~31) >> 3
imageSize = |height| * stride
24 биттік 1920x1080 суретте әр жол 1920 x 3 = 5 760 байт (онсыз да 4-ке еселі), сондықтан пиксель деректері 5 760 x 1 080 = 6 220 800 байт. 54 байттық тақырыптармен бірге файл шамамен 6,2 МБ болады. Сол сурет JPG түрінде әдетте мұның шағын бөлігін ғана алады.
Түс тереңдігі, қысу және мөлдірлік
BITMAPV5HEADER құжаттамасы пиксельге 1, 4, 8, 16, 24 және 32 битті анықтайды (0 мәні тереңдіктің ендірілген JPEG не PNG деректерінен алынатынын білдіреді). 1 бит ақ-қара, 4 бит 16 түс, ал 8 бит 256 түсті палитра. 24 битте әр пиксель көк, жасыл, қызыл ретімен үш байт болады.
Қысу өрісі мына мәндерді қабылдай алады:
- BI_RGB: Қысылмаған. Іс жүзінде BMP файлдарының басым көпшілігі.
- BI_RLE8 және BI_RLE4: 8 биттік және 4 биттік палитралы суреттерге арналған қарапайым қайталау ұзындығы бойынша кодтау. Тұтас түсті үлкен аймақтарға пайдалы, фотосуреттерге дерлік пайдасыз.
- BI_BITFIELDS: Қысу емес; маскалар 16 биттік және 32 биттік пиксельдерде қызыл, жасыл және көк биттердің қай жерде тұрғанын анықтайды (мысалы, RGB 565).
- BI_JPEG және BI_PNG: Растрлық суреттің ішінде JPEG не PNG деректеріне рұқсат береді. Жалпы мақсаттағы қарау құралдары оларды сирек қолдайды.
Мөлдірлік BMP-нің ең тұрақсыз саласы. V4 және V5 тақырыптарындағы альфа маскасы 32 биттік пиксельдің төртінші байтын мөлдірсіздік ретінде анықтай алады, бірақ классикалық 32 биттік BMP-де бұл байт қолданылмайды деп сипатталады және көптеген бағдарламалар оны елемейді. Сондықтан бір бағдарламада мөлдір көрінетін, ал басқасында қара фонда тұрған 32 биттік BMP әдеттен тыс нәрсе емес. Мөлдірлік керек болса, PNG әлдеқайда қауіпсіз таңдау.
Жүйелердегі, браузерлердегі және бағдарламалардағы қолдау
BMP дерлік барлық жерде ашылады. Windows-тың кіріктірілген қарау құралдары мен Paint, macOS Preview және кең таралған Linux қарау құралдары оны оқиды. MDN сурет форматтары нұсқаулығы BMP қолдауын Chrome, Edge, Firefox, Opera және Safari-дің барлық нұсқаларында көрсетеді. Сол нұсқаулық қысылмаған BMP файлдарының PNG не JPG-мен салыстырғанда өте үлкен екенін және оларды сайт мазмұны үшін әдетте қолданбаған жөн екенін де атап өтеді.
BMP бүгін қайда қолданылады?
- Windows қосымшаларының ресурстары және ескі бағдарламалар: Құралдар тақтасының суреттері, орнату шеберінің графикасы және кейбір ойын ресурстары әлі де BMP.
- Ендірілген жүйелер мен микроконтроллерлер: Дисплейі бар құрылғыға JPEG декодері керек емес; пиксель деректерін экранға тікелей көшіруге болады.
- Өнеркәсіптік камералар, сканерлер және сынақ құралдары: Шикі, шығынсыз нәтиже керек болғанда BMP қарапайым аралық формат.
- Оқыту: Тақырыбы небәрі бірнеше ондаған байт болғандықтан, BMP суретті өңдеу курстарында студенттер оқып, жазатын алғашқы формат болып жиі табылады.
Күшті және әлсіз жақтары
| Күшті жақтары | Әлсіз жақтары |
|---|---|
| Шығынсыз; пиксель мәндері ешқашан өзгермейді | Қысылмаған, сондықтан файлдар өте үлкен |
| Оқу мен жазу өте оңай, процессорға жүк жоқ | Мөлдірлікті қолдауы тұрақсыз |
| Дерлік барлық операциялық жүйе мен браузерде ашылады | Метадеректерді (EXIF, сипаттамалар) әлсіз қолдайды |
| Палитра режимдері ресурсы аз құрылғыларға жарасады | Веб, электрондық пошта және жүктеу формалары үшін ыңғайсыз |
Жиі кездесетін мәселелер және оларды шешу
Файл пошта не жүктеу формасы үшін тым үлкен
Бұл ең жиі кездесетін мәселе. Фотосуреттер мен сканерленген құжаттар үшін BMP-ді JPG-ге түрлендіру әдетте өлшемді бір реттік шамаға не одан да көп азайтады. Скриншоттар, диаграммалар не мәтіні бар кез келген сурет үшін BMP-ді PNG-ге түрлендіру жақсырақ: PNG де шығынсыз, бірақ қысылған және JPG анық жиектердің айналасында тудыратын шуды қоспайды.
32 биттік BMP қара фонды көрсетеді
Бағдарлама альфа байтын танымайды не қате оқиды. PNG-ге түрлендіру әдетте мұны түзетеді. Мөлдірлігі жоқ JPG-ге түрлендіргенде мөлдір аймақтар ақпен не сіз таңдаған түспен толтырылады.
Сурет төңкерілген не қисайған
Өзіңіз жазған оқу бағдарламасында бұл әдетте екі қатеден болады: жолдардың төменнен жоғары сақталатынын елемеу немесе әр жолдың соңындағы толықтыру байттарын өткізіп жібермеу. Жоғарыдағы stride формуласын қолдану және биіктіктің таңбасын тексеру екеуінің де алдын алады.
Бағдарлама BMP-ді ашудан бас тартады
RLE қысуы, BI_BITFIELDS не ендірілген JPEG/PNG деректері бар BMP файлдарын кейбір қарапайым оқу құралдары қолдамайды. Қысылмаған 24 биттік BMP ретінде қайта сақтау не PNG-ге түрлендіру үйлесімділік мәселесін жояды.
Түрлендіру бойынша кеңестер
- Фотосуреттерге JPG, графикаға PNG: BMP-ден шыққанда әдеттегі ереже қолданылады. Веб үшін сурет түрлендіргішінде WebP не AVIF-ті де таңдауға болады.
- Сапаны жоғары ұстаңыз: BMP шығынсыз болғандықтан, JPG-тің 85-90% сапасы түпнұсқадан ажырату қиын нәтиже береді.
- Қажет болса кішірейтіңіз: Файл әлі де үлкен болса, пиксель өлшемдерін азайтыңыз не мақсатты өлшемге жету үшін суретті қысу құралын қолданыңыз.
- Кері бағытта: Ендірілген құрылғыға не ескі бағдарламаға BMP керек болса, сурет түрлендіргішінде мақсатты формат ретінде BMP-ді таңдаңыз. Біздің құралдар стандартты қысылмаған 24 биттік BMP жазады; мөлдір аймақтар сіз таңдаған фон түсіне біріктіріледі.
Біздің BMP түрлендіру беттері браузеріңізде жұмыс істейді: файл жүктелмейді және құрылғыңыздан ешқашан шықпайды.
Жиі қойылатын сұрақтар
BMP пен DIB бір нәрсе ме?
Іс жүзінде иә. DIB Windows жадта және алмасу буферінде қолданатын құрылғыға тәуелсіз растрлық сурет құрылымы; BMP файлы алдына 14 байттық файл тақырыбы қосылған сол құрылым.
BMP шығынсыз ба?
Иә. Қысылмаған және RLE арқылы қысылған BMP файлдары пиксель мәндерін дәл сақтайды. Жалғыз ерекшелік ішінде JPEG деректері бар сирек BMP.
BMP-ді PNG-ге түрлендіргенде сапа жоғала ма?
Жоқ. PNG де шығынсыз; сурет бірдей күйінде қалады және тек қысылғандықтан кішірейеді.
Сайтта BMP қолдануға бола ма?
Браузерлер BMP-ді көрсетеді, бірақ файлдар қажетсіз үлкен және беттерді баяулатады. Веб үшін JPG, PNG, WebP не AVIF қолданыңыз.
BMP мөлдірлікті қолдай ма?
32 биттік BMP теориялық тұрғыдан альфа арнасын тасымалдай алады, бірақ бағдарламалар оны тұрақты қолдамайды. Мөлдірлік керек болған кезде PNG қауіпсізірек таңдау.


