Internet Windows Android
Kengaytirish

Bmp kengaytmali grafik fayl. BMP fayl kengaytmasi nima? Fayl tuzilishiga umumiy nuqtai

bmp fayl formati rastrli tasvir bo'lib, juda mashhur. Bu har qanday Windows operatsion tizimi tomonidan yaxshi "tushuniladi".

Kompyuteringizda bmp kengaytmali faylni ochish avtomatik ravishda amalga oshirilishi kerak - sichqonchaning chap tugmasi bilan uni ikki marta bosing.

Agar bu siz uchun sodir bo'lmasa, ehtimol fayl assotsiatsiyasi buzilgan bo'lsa, tizim uni nima bilan ochishni qo'lda belgilashi kerak.

Buni amalga oshirish uchun bmp faylingizni sichqonchaning o'ng tugmasi bilan bosing, kursorni "bilan ochish" qatoriga o'tkazing va o'zingiz xohlagan dasturni (agar o'rnatilgan bo'lsa), masalan, Paint-ni tanlang.

Bmp kengaytmasini ochish uchun qaysi dastur

Bmp formatini ochishning eng oson yo'li Windows foto albomi dasturida. Uni yuklab olishning hojati yo'q - u operatsion tizim bilan birga keladi, ya'ni har kimga ega bo'lishi kerak.

Ikkinchi dastur - "Paint". Uni yuklab olishning hojati yo'q - u sukut bo'yicha Windows-ga o'rnatilgan, bundan tashqari, siz nafaqat bmp kengaytmasini tahrirlashingiz, balki ochganingizdan so'ng uni boshqa formatda saqlashingiz mumkin, masalan jpg - telefoningizda ko'rish uchun .

Uchinchi dastur - "PhotoScape". Siz uni yuklab olishingiz kerak bo'ladi. Bu bepul, rus tilida va uning yordami bilan ko'rishdan tashqari siz bmp tasvirlarini qayta ishlashingiz mumkin.

To'rtinchi Paint.NET ilovasi. Shuningdek, u bepul, ruscha interfeysga ega, qulay va ulardan foydalanish juda oson, tasvirlar va fotosuratlarni sozlash va tahrirlash uchun ko'plab vositalar mavjud - bu standart "Bo'yoq" o'rnini bosadigan narsaga o'xshaydi.

Beshinchi dastur "GIMP". Bu fotoshop bilan taqqoslanadi. Bu barcha kerakli funktsiyalarga ega va soddaligi bilan ajralib turadigan professional foydalanish uchun bepul grafik muharrir.

Yuqorida keltirilgan ushbu formatdagi fayllarni ochadigan dasturlar hammasi emas. Ularning o'nlablari bor, ammo bu oddiy kompyuter foydalanuvchisi uchun etarli. Omad.

Bitmap tasviridagi matnni qanday yashirish mumkin. Afsuski, men ushbu mavzu bo'yicha hech qanday mavzu topa olmadim va bu bo'shliqni to'ldirishga qaror qildim. Kesish ostida siz bitmapdagi matnni yashirish usulini, shuningdek C# da amalga oshirishni topasiz.

Muammoni shakllantirish

Windows-1251 kodlash tizimidagi ixtiyoriy matnni 24 bitli bitmap tasvirga yashiring va uni buzilmasdan qaytaring.

bmp fayl tuzilishi

Birinchidan, sizga bitmap fayli nima ekanligini eslatib o'taman. Ishonchim komilki, siz bularning barchasini juda yaxshi bilasiz, taqdim etilgan material asosida matnni yashirish algoritmini tasvirlash yanada aniqroq bo'ladi. Shunday qilib. Har qanday bmp fayli to'rt qismdan iborat:
  1. Fayl sarlavhasi
  2. Rasm nomi (yo'q bo'lishi mumkin)
  3. Palitra (yo'qolgan bo'lishi mumkin)
  4. Tasvirning o'zi
Fayl sarlavhasi xizmat ma'lumotlarini, shu jumladan tasvirning bit chuqurligini o'z ichiga oladi. Aytgancha, palitra 24 bitli chizma uchun ishlatilmaydi. Topshiriqda biz faqat 24 bitli tasvirlar bilan ishlashimizni aniq ta'kidlaganimiz uchun, ideal holda biz kiritilgan tasvirni talablarga muvofiqligini tekshirishimiz mumkin.
Endi rasmning o'ziga o'tamiz. Ma'lumki, bmp formati sukut bo'yicha siqishni ta'minlamaydi (garchi RLE algoritmi yordamida siqishni qo'llab-quvvatlasa ham). Shunday qilib, bizning holatlarimizda har bir piksel 24 bit, har bir rang komponenti uchun bir bayt bilan kodlangan. Shuning uchun biz ko'proq yoki kam emas, balki aniq 16777216 rangni kodlashimiz mumkin. Aniqlik uchun bu erda rasm:

Matnni yashirish algoritmi g'oyasi

Ehtimol, siz bu fikr nima ekanligini allaqachon taxmin qilgansiz. Gap shundaki, o'rtacha odamning ko'zi (professional rassom yoki fotograf emas) yuqorida ko'rsatilganidan ko'ra kamroq ranglarni ajratib turadi. Ko'z qancha rangni ajrata oladi degan savolga bironta ham kitobda aniq javob yo'q, lekin men uchratgan eng katta raqam 10 millionni tashkil etadi.Bundan kelib chiqadiki, har bir rang komponentiga ajratilgan sakkiztasining eng kichik ahamiyatli bitlaridan bir nechtasi ko'zni qanday rangga ajrata oladi? bizning xudbin maqsadlarimiz uchun qarz olish.
Bir nechta raqamlar: masalan, RGB komponentidan ikkita past tartibli bitni olamiz va aniq ayiramiz. Ya'ni, 24 bitdan bizda 18 tasi qoladi, ular aniq 262144 rangni kodlashi mumkin. Endi har bir belgi 8 bit bilan ifodalangan windows-1251 kodlashidagi matnni olaylik. Oddiy matematik hisob-kitoblar orqali biz 3 ta belgini 4 pikselda saqlash mumkinligini aniqlaymiz. Shunday qilib, 786432 piksel bo'lgan 1024x768 tasvirda siz 589824 belgini saqlashingiz mumkin. Yomon emas, to'g'rimi? Aniqlik uchun men ikkita rasm beraman. Birinchisida asl rasm, ikkinchisida esa har bir rang komponentining kamida muhim ikki biti matn bilan to'ldirilgan rasm. Trafikni tejash uchun tasvirlar png ga aylantirilishini darhol band qilishimga ruxsat bering.

Asl rasm:


Matnni o'z ichiga olgan rasm


Agar diqqat bilan qarasangiz, ikkinchi rasmda ranglar xiraroq ko'rinadi. Ha bu shunday. Ammo siz va men taqdim etilgan rasmda nimadir noto'g'ri ekanligini bilamiz va agar biz bilmaganimizda, unda qandaydir matn yashiringanligini taxmin qilmagan bo'lardik. Aytgancha, tasvirda “Salom Dunyo!!!” iborasi yashiringan. =)" 100 marta ko'paytirildi.
Ana xolos. Ko'rib turganingizdek, g'oya juda oddiy. Aytgancha, taqdim etilgan usul LSB deb ataladi (maslahat uchun frolga rahmat). Nihoyat, siz C# da amalga oshirishni ko'rishingiz mumkin.

C# da amalga oshirish

Taqdim etilgan dastur “Mukammal kod” mukofotiga loyiq emas, u faqat tasvirlangan algoritmni amalda namoyish etadi. Bunday holda, men kodning go'zalligini emas, balki ravshanligini ta'qib qildim.

Spriteni ekran atrofida siljitadigan kichik dastur ko'rib chiqildi, ammo, afsuski, u biz xohlagandek ko'rinmadi. Ushbu maqolada biz spraytni "tartibga solishga" harakat qilamiz.

Biz Sprite tasvirini Bmp faylidan oldik; xuddi shu fayllardan biz fon tasvirini, sichqoncha kursorini va interfeys elementlarini olishimiz mumkin. Biroq, biz ekranda ko'rgan narsa biz kutganimizdek emas: tasvir teskari bo'lib chiqdi va bundan tashqari, talab qilinganidan farqli ranglar bilan chiqdi. Shunday qilib, keling, Bmp fayllarini qanday qilib to'g'ri o'qishni o'rganamiz va rasmni "boshdan oyoqqa" aylantiramiz.

Ishlab chiquvchilarning qaroriga ko'ra, Bmp fayl formati ma'lum bir apparat platformasiga bog'lanmagan. Ushbu fayl to'rt qismdan iborat: sarlavha, ma'lumot sarlavhasi, ranglar jadvali (palitra) va tasvir ma'lumotlari. Agar fayl rang chuqurligi 24 bit (16 million rang) bo'lgan tasvirni saqlasa, u holda ranglar jadvali etishmayotgan bo'lishi mumkin, ammo bizning 256 rangli holatimizda u mavjud. 256 rangli tasvirni saqlaydigan faylning har bir qismining tuzilishi -da, tegishli yozuv turlari esa -da keltirilgan.

Fayl sarlavhasi bilan boshlanadi imzolar"BM" dan keyin fayl uzunligi baytlarda ifodalanadi. Keyingi 4 bayt boshqa format kengaytmalari uchun ajratilgan va bu sarlavha tugaydi siljish faylning boshidan unda yozilgan tasvir ma'lumotlarigacha. 256 ta rang bilan bu ofset 1078 ni tashkil etadi - ma'lumotlarga kirish uchun oldingi dasturimizda aynan shu narsani o'tkazib yuborishimiz kerak edi.

Ma'lumot sarlavhasi o'z uzunligidan boshlanadi (bu farq qilishi mumkin, lekin 256 rangli fayl uchun u 40 baytni tashkil qiladi) va tasvir o'lchamlari, piksellar soni, rang taqdimoti xususiyatlari va boshqa parametrlarni o'z ichiga oladi.

Rasm kengligi va balandligi rastr nuqtalarida ko'rsatilgan va ehtimol tushuntirishni talab qilmaydi.

Samolyotlar soni rang chuqurligi past bo'lgan fayllarda foydalanish mumkin. Ranglar soni 256 yoki undan ko'p bo'lsa, u har doim 1 ga teng bo'ladi, shuning uchun bu maydon endi eskirgan deb hisoblanishi mumkin, ammo moslik uchun u saqlanib qoladi.

Rang chuqurligi rang faylda ifodalanishining eng muhim xarakteristikasi hisoblanadi va har bir nuqtada bit bilan o'lchanadi. Bu holda u 8 ga teng.

Siqish. U odatda Bmp fayllarida ishlatilmaydi, lekin buning uchun sarlavhadagi maydon taqdim etiladi. Odatda bu 0, ya'ni tasvir siqilmagan. Kelajakda biz faqat shunday fayllardan foydalanamiz.

Rasm hajmi- bu tasvirni saqlash uchun zarur bo'lgan xotira baytlari soni, palitra ma'lumotlarini hisobga olmaganda.

Gorizontal va vertikal o'lchamlari metr boshiga rastr nuqtalarida o'lchanadi. Ular skanerlangan tasvirlar masshtabini saqlash uchun ayniqsa muhimdir. Grafik muharrirlar yordamida yaratilgan tasvirlar odatda bu maydonlarda nolga ega.

Ranglar soni agar rasmda tanlangan rang chuqurligi ruxsat etilganidan kamroq ranglar mavjud bo'lsa, palitralar jadvalining hajmini kamaytirishga imkon beradi. Biroq, amalda bunday fayllar deyarli topilmaydi. Agar ranglar soni rang chuqurligi tomonidan ruxsat etilgan maksimal bo'lsa, masalan, 8 bitda 256 rang, maydon nolga o'rnatiladi.

Asosiy ranglar soni- palitraning boshidan keladi va uni buzmasdan ko'rsatish maqsadga muvofiqdir. Displey ranglarining maksimal soni Bmp fayl palitrasidan kamroq bo'lsa, bu maydon muhim ahamiyatga ega. Formatni ishlab chiqishda, eng tez-tez uchraydigan ranglar jadvalning boshida joylashganligi aniq taxmin qilingan. Endi bu talab amalda bajarilmaydi, ya'ni ranglar faylda paydo bo'lish chastotasiga qarab tartibga solinmaydi. Bu juda muhim, chunki ikkita turli faylning palitralari, hatto bir xil ranglardan tashkil topgan bo'lsa ham, ularni (ranglarni) boshqa tartibda o'z ichiga oladi, bu esa bunday tasvirlarni bir vaqtning o'zida ekranda ko'rsatishni sezilarli darajada murakkablashtirishi mumkin.

Ma'lumot sarlavhasidan keyin rangli jadval joylashgan bo'lib, u 256 (ranglar soni bo'yicha) 4 baytli maydonlardan iborat. Har bir maydon palitradagi rangga mos keladi va to'rt baytdan uchtasi ushbu rangning ko'k, yashil va qizil komponentlariga mos keladi. Har bir maydonning oxirgi, eng muhim bayti zahiralangan va 0 ga teng.

Ranglar jadvalidan keyin rastr chiziqlari bo'ylab pastdan yuqoriga, chiziq ichida esa chapdan o'ngga yoziladigan tasvir ma'lumotlari mavjud. Ba'zi platformalarda 4 baytdan kam bo'lgan ma'lumotlar birligini o'qish mumkin emasligi sababli, har bir satr uzunligi 4 bayt chegarasiga to'g'ri keladi, ya'ni agar chiziq uzunligi to'rtga karrali bo'lmasa, u bilan to'ldirilgan. nollar. Faylni o'qishda ushbu holatni hisobga olish kerak, garchi barcha tasvirlarning gorizontal o'lchamlari 4 ga ko'paytirilishini oldindan ta'minlash yaxshiroqdir.

Yuqorida aytib o'tganimizdek, fayl formati turli platformalar uchun universal bo'lishi uchun yaratilgan, shuning uchun palitra ranglari unda VGA uchun odatiy bo'lganidan boshqacha tarzda saqlanganligi ajablanarli emas. O'qish jarayonida kerakli qayta kodlash amalga oshiriladi. (VGA palitrasi nima va u bilan qanday ishlash haqida keyingi maqolalarda gaplashamiz.)

256 rangli Bmp fayllarni o'qish moduli faqat ikkita protseduraga ega. Ro'yxatdan ko'rinib turibdiki, tasvir o'lchamlari ReadBMP faylini o'qish protsedurasiga o'tkazilishi kerak. Tasvirni to'liq o'qish kerak bo'lmasa, bu qulay. Agar o'lchamlar oldindan ma'lum bo'lsa, bu muammo tug'dirmaydi, lekin bizning modulimiz yordamida har qanday tasvirni, shu jumladan o'lchami oldindan noma'lum bo'lganlarni ham o'qish mumkin bo'lsa yaxshi bo'lardi. Buning uchun faqat fayl sarlavhasini o'qiydigan ReadBMPheader protsedurasi taqdim etilgan. Unga qo'ng'iroq qilish orqali siz tasvir tanlangan 256 rangli formatda yozilganligini tekshirishingiz, uning o'lchamlarini bilib olishingiz va shundan keyingina unga xotira ajratishingiz va ajratilgan buferga joylashtirishingiz mumkin.

Endi dasturimizga yangi modulni ulaymiz. Buning uchun biz uning nomini uses direktivasiga yozamiz, shuningdek, palitra haqidagi ma'lumotlarni saqlash uchun massivni taqdim etamiz, uni quyidagicha tasvirlash mumkin:

P: bayt massivi;

Yangi moduldan faylni o'qish operatsiyasini chaqiruvchi CreateSprite protsedurasi soddalashtirildi (qarang).

Bmp fayl tuzilishi

Ism Uzunlik Tarafsizlik Tavsif
Fayl sarlavhasi (BitMapFileHeader)
Turi2 0 "BM" imzosi
Hajmi4 2 fayl hajmi
Zaxira qilingan 12 6 Zaxiralangan
Zaxira qilingan 22 8 Zaxiralangan
OffsetBits4 10 Rasm fayl boshidan ofset
Ma'lumot sarlavhasi (BitMapInfoHeader)
Hajmi4 14 Sarlavha uzunligi
Kengligi4 18 Rasm kengligi, nuqtalar
Balandligi4 22 Rasm balandligi, nuqtalar
Samolyotlar2 26 Samolyotlar soni
BitCount2 28 Rang chuqurligi, har bir nuqta uchun bit
Siqish4 30 Siqish turi (0 - siqilmagan tasvir)
Tasvir hajmi4 34 Rasm hajmi, baytlar
XpelsPerMeter4 38 Gorizontal o'lchamlari, metr boshiga nuqta
YpelsPerMeter4 42 Vertikal o'lchamlari, metr boshiga nuqta
Ishlatilgan ranglar4 46 Amaldagi ranglar soni (ma'lum bir rang chuqurligi uchun maksimal mumkin bo'lgan 0)
Ranglar Muhim4 50 Asosiy ranglar soni
Ranglar jadvali (palitra)
Ranglar jadvali1024 54 4 baytdan iborat 256 element
Rasm maʼlumotlari (BitMap massivi)
RasmHajmi1078 Rasm chapdan o'ngga va pastdan yuqoriga qatorlar bo'yicha yozilgan

Ro'yxat 1

bmpread birligi; (Bmp bilan ishlash tartiblari) interfeys turi artype = bayt massivi; arptr = ^ artype; bmFileHeader = rekord (fayl sarlavhasi) Typf: so'z; (imzo ) Hajmi: longint; (fayl uzunligi baytda) Res1: word; (zahiralangan) Res2: so'z; (zahiralangan) OfBm: longint; (tasvir baytlarda ofset (1078)) end; bmInfoHeader = yozuv (ma'lumot sarlavhasi) Hajmi: longint; (sarlavha uzunligi baytda (40)) Widt: longint; (tasvir kengligi (pikselda)) Heig: longint; (tasvir balandligi (pikselda)) Reja: so'z; (samolyotlar soni (1)) BitC: so'z; (rang chuqurligi (nuqta uchun bit) (8)) Comp: longint; (siqish turi (0 - yo'q)) SizI: longint; (tasvir hajmi baytlarda) XppM: longint; (gorizontal o'lchamlari) ((metr uchun nuqta - odatda 0)) YppM: longint; (vertikal ruxsat) ((metr boshiga nuqta - odatda 0)) NCoL: longint; (ranglar soni) ((agar ruxsat etilgan maksimal 0 bo'lsa)) NCoI: longint; (asosiy ranglar soni) oxiri; bmHeader = yozuv (to'liq fayl sarlavhasi) f: bmFileHeader; (fayl sarlavhasi) i: bmInfoHeader; (ma'lumot sarlavhasi) p: bayt massivi; (palitra jadvali) oxiri; bmhptr = ^bmHeader; (Bmp faylidan tasvirni o'qish) protsedurasi ReadBMP(image:arptr; (rasmli massiv) xim,yim:word; (o'lchamlar) pal:arptr; (palitra) fayl nomi:string); (fayl nomi) (Bmp fayl sarlavhasini o'qish) protsedurasi ReadBMPheader(header:bmhptr;filename:string); amalga oshirish ($R-) (Bmp faylidan tasvirni o'qish) protsedurasi ReadBMP(image:arptr; xim,yim:word; pal:arptr; fayl nomi:string); var h: bmHeader; i:integer; bmpfayl: fayl; s: longint; tayinlashni boshlash (bmpfayl, fayl nomi); qayta o'rnatish (bmpfayl, 1); bloklangan o'qish(bmpfayl,h,sizeof(h)); (sarlavhani o'qing) i:= 0 dan yim-1 gacha boshlanadi (satr satr o'qing) blockread(bmpfile,image^[(yim-i-1)*xim],xim); agar (xim mod 4)<>0 keyin bloklangan o'qish (bmpfile,s,4 - (xim mod 4)); oxiri; yopish (bmpfayl); i ^= 0 dan 255 gacha do boshlanadi (palitrani o'zgartirish) pal^ := h.p shr 2; (ko'k) pal^ := h.p shr 2; (yashil) pal^ := h.p shr 2; (qizil) oxiri; oxiri; (Bmp faylining sarlavhasini o'qish) protsedurasi ReadBMPheader(header:bmhptr;filename:string); var bmpfile:fayl; tayinlashni boshlash (bmpfayl, fayl nomi); qayta o'rnatish (bmpfayl, 1); blok o'qish (bmpfayl, sarlavha ^, o'lcham (sarlavha ^)); yopish (bmpfayl); oxiri; oxiri.

Ro'yxat 2

( sprite) protsedurasi CreateSprite(s:string; x,y,dx,dy:integer); var f: fayl; (sprite tasvirli fayl) begin getmem(Sprt.Img,sizeof(SpriteArrayType)); (sprite uchun xotira ajratish) getmem(Sprt.Back,sizeof(SpriteArrayType)); (bufer uchun xotira ajratish) Readbmp(@(Sprt.Img^),Xsize,Ysize,@p,s); Sprt.x:= x; Sprt.y:=y; (boshlang'ich qiymatlarni o'rnating) Sprt.dx:= dx; (koordinatalar va o'sishlar) Sprt.dy:= dy; oxiri;

BMP fayl formati (BitMaP uchun qisqa) Windows uchun mahalliy rastr grafik formatidir, chunki u ushbu tizim rastr massivlarini saqlaydigan mahalliy Windows formatiga eng mos keladi. BMP formatida ko'pincha ishlatiladigan fayl nomi kengaytmasi BMP bo'lib, ba'zi fayllar RLE kengaytmasiga ega bo'lib, u ish uzunligini kodlashni anglatadi. Fayl nomining RLE kengaytmasi odatda faylning rastr ma'lumotlari BMP formatidagi fayllar uchun amal qiladigan ikkita RLE siqish usullaridan biri yordamida siqilganligini bildiradi.

BMP fayllarida har bir pikselning rang ma'lumotlari 1, 4, 8, 16 yoki 24 bit (bit/piksel) da kodlangan. Rang chuqurligi deb ham ataladigan piksel boshiga bitlar soni tasvirdagi ranglarning maksimal sonini aniqlaydi. Chuqurligi 1 bit/piksel bo‘lgan tasvir faqat ikkita rangga, 24 bit/piksel chuqurlikda esa 16 milliondan ortiq turli rangga ega bo‘lishi mumkin.

Quyidagi diagrammada 256 rangli tasvirni (8 bit/piksel chuqurligi) o'z ichiga olgan odatiy BMP faylining tuzilishi ko'rsatilgan. Fayl to'rtta asosiy bo'limga bo'lingan: rastrli grafik fayl sarlavhasi, rastr massivining axborot sarlavhasi, rangli jadval va rastr massivi ma'lumotlarining o'zi. Rastrli grafik faylning sarlavhasi fayl haqidagi ma'lumotlarni, shu jumladan rastr massiv ma'lumotlar maydoni boshlanadigan manzilni o'z ichiga oladi. Rastr massivi ma'lumotlar sarlavhasi faylda saqlangan tasvir haqidagi ma'lumotlarni o'z ichiga oladi, masalan, piksellardagi balandligi va kengligi. Ranglar jadvali rasmda ishlatiladigan ranglar uchun RGB (qizil, yashil, ko'k) asosiy rang qiymatlarini beradi. BMP fayllarini o'qiydigan va ko'rsatadigan dasturlar, 256 dan ortiq rangni ko'rsatishga imkon bermaydigan video adapterlardan foydalanganda, ranglarning aniq takrorlanishi uchun adapterlarning rang palitralarida bunday RGB qiymatlarini dasturiy ravishda o'rnatishi mumkin.

BMP faylidagi haqiqiy rastr massivi ma'lumotlarining formati har bir piksel uchun rang ma'lumotlarini kodlash uchun ishlatiladigan bitlar soniga bog'liq. 256 rangli tasvir bilan faylning haqiqiy rastr massivi ma'lumotlarini o'z ichiga olgan qismidagi har bir piksel bir bayt (8 bit) bilan tavsiflanadi. Ushbu piksel tavsifi RGB rang qiymatlarini ifodalamaydi, lekin faylning ranglar jadvaliga kirish uchun ko'rsatgich bo'lib xizmat qiladi. Shunday qilib, agar R/G/B=255/0/0 BMP faylining ranglar jadvalida birinchi RGB rang qiymati sifatida saqlansa, rastr massividagi 0 piksel qiymatiga yorqin qizil rang beriladi. Piksel qiymatlari chapdan o'ngga tartibda saqlanadi (odatda) rasmning pastki qatoridan boshlanadi. Shunday qilib, 256 rangli BMP faylida rastr massiv ma'lumotlarining birinchi bayti tasvirning pastki chap burchagida joylashgan piksel rangining indeksidir; ikkinchi bayt o'ngga ulashgan piksel rangi indeksini ifodalaydi va hokazo. Agar har bir satrdagi baytlar soni toq bo'lsa, rastr massivi ma'lumotlarini 16 bitli chegaralarda tekislash uchun har bir qatorga qo'shimcha bayt qo'shiladi. .


Barcha BMP fayllari diagrammada ko'rsatilgandek tuzilishga ega emas. Masalan, 16 va 24 bit/pikselli BMP fayllarida rangli jadvallar mavjud emas; Ushbu fayllarda rastr massivining piksel qiymatlari to'g'ridan-to'g'ri RGB rang qiymatlarini tavsiflaydi. Faylning alohida bo'limlarining ichki xotira formatlari ham farq qilishi mumkin. Masalan, ba'zi 16 va 256 rangli BMP fayllaridagi rastr massiv ma'lumotlari bir xil tasvir piksellari ketma-ketligini ketma-ketlikdagi piksellar sonini va ularning rangini belgilovchi belgilar bilan almashtiradigan RLE algoritmi yordamida siqilishi mumkin. Windows tizimida siz turli xil rastr massiv sarlavhalari va rangli jadval formatlaridan foydalanadigan OS/2 uslubidagi BMP fayllari bilan ishlashingiz mumkin.

Ko'pincha, grafikalar bilan ishlashda ko'p foydalanuvchilar BMP formatidagi tasvirlarga duch kelishadi. Bugungi kunda bu nima ekanligini kam odam biladi. Endi biz BMP grafik formatini batafsil ko'rib chiqamiz. Bundan tashqari, biz nafaqat uning kelib chiqishi va evolyutsiyasi tarixini kuzatamiz, balki uni boshqa mashhur formatlarga o'tkazishning oddiy usullarini ham taklif qilamiz.

BMP formati nima?

Keling, juda ko'p texnik tafsilotlarga kirmaylik. E'tibor bering, BMP - bu bitta qatlamli rastrlar asosida bitmap shaklida grafik tasvirlarni saqlash formati.

Ha bu haqiqat. Dastlab, BMP tasvir formati faqat rastrli tasvirlarga qo'llanilgan va umuman barcha grafikalar uchun universal (standart) kengaytma edi.

Kelib chiqish tarixi

Ushbu formatning yaratilish tarixi Microsoft korporatsiyasi bilan chambarchas bog'liq bo'lib, u birinchi bo'lib o'zining asosiy miyasida - Windows operatsion tizimida amalga oshirilgan. Bundan tashqari, Apple bilan doimiy raqobatga qaramay, keyinchalik OS/2 operatsion tizimi uchun ushbu turdagi grafiklarni qo'llab-quvvatlash e'lon qilindi.

To'g'ri, o'shandan beri BMP grafik formati juda ko'p o'zgarishlarga duch keldi. Dastlab tasvirning tuzilishi bugungi kunda piksellar deb ataladigan kichik kvadratlar birikmasiga qurilgan deb taxmin qilingan. Tasvirdagi har bir piksel turli xil rang chuqurligi (bunday grafik birlik uchun bitlar soni) haqidagi ma'lumotlarni o'z ichiga olishi mumkin deb ishoniladi. Rang bitining chuqurligini ko'rsatish uchun ishlatiladigan qiymatlar quyidagilar: 1, 2, 4, 8, 16, 24, 32, 48, 64 bit.

Bunday holda, 8 dan kichik qiymatlar uchun rang faqat soyalar palitrasi (jadval) indeksi yordamida ko'rsatiladi va indeksdan yuqori qiymatlar uchun standart RGB modelidan olinadi. Ikkinchisida qizil, yashil va ko'kni aralashtirish natijasida olingan rang o'zgarishlari mavjud.

Aniq bo'lganidek, bit chuqurligi qanchalik baland bo'lsa, yakuniy tasvirning o'lchami shunchalik katta bo'ladi. Aytish kerakki, BMP fayl formati o'sha uzoq vaqtlarda ham, bugungi kunda ham mastodonning bir turiga o'xshaydi, chunki uning hajmi juda katta. Bu, aytaylik, bir xil JPG formatiga nisbatan tasvirning o'zi siqilmaganligi bilan bog'liq. Xuddi shu tasvirni o'z ichiga olgan har xil turdagi kengaytmali fayllar hajmi nafaqat yuzlab - o'n minglab marta farq qilishi mumkin.

BMP fayl formatini qanday ochish mumkin?

Ushbu turdagi tasvirlarni ochishga kelsak, har qanday Windows operatsion tizimida buning uchun o'rnatilgan vositalar mavjud.

Ko'rish ilovalari yaratilgunga qadar, asosiy tahrirlash vositasi Windowsning istalgan versiyasiga kiritilgan mahalliy Paint dasturi bo'lib qoldi. O'sha paytda ushbu dastur faqat BMP formatini qo'llab-quvvatlagan.

Aniq bo'lganidek, texnologiyaning rivojlanishi va formatning o'zi evolyutsiyasi bilan dastur ham o'zgardi. Bugungi kunda Paintning imkoniyatlari uning dastlabki versiyalariga qaraganda ancha katta.

Bundan tashqari, grafiklarni ko'rish va tahrirlash uchun dasturlarning paydo bo'lishi bilan BMP fayl formati texnik yordam va ularda e'lon qilindi. Buning ajablanarli joyi yo'q, chunki u bugungi kunda ma'lum bo'lgan deyarli barcha tasvir fayl kengaytmalarining "katta bobosi" edi.

Bunday grafik ma'lumotlar bilan ishlash uchun ko'plab dasturlarni topishingiz mumkin. Ko'rish vositalari orasida, masalan, Windows-da siz standart vositadan foydalanishingiz mumkin, uchinchi tomon ilovalari orasida ACDSee yoki Irfan View va boshqa ko'plab dasturiy ta'minot paketlari juda mashhur.

Tahrirlashga kelsak, siz ish uchun har qanday narsadan foydalanishingiz mumkin, masalan, xuddi shu Adobe Photoshop, Corel Draw yoki hatto minimal vositalar va imkoniyatlarga ega bo'lgan boshqa grafik muharrir.

BMP formatini aylantirishning eng oddiy usuli

Keling, BMP formatini eng oddiy usullar bilan qanday o'zgartirishni ko'rib chiqaylik. Buning uchun siz bir xil grafik muharrirlardan foydalanishingiz mumkin.

Agar standart Paint dasturini misol tariqasida oladigan bo'lsak, unda dastlab kerakli BMP fayli ochiladi, shundan so'ng "Fayl" menyusidan "Fayl" menyusidan "Boshqacha saqlash ..." buyrug'i tanlanadi, bu erda ildizda, pastki qatorda. (ochiladigan menyu), siz qo'llab-quvvatlanadigan formatlarni topishingiz mumkin.

Aslida, har qanday boshqa grafik muharrirda bitmapni aylantirish texnologiyasi yuqorida tavsiflanganga o'xshaydi. Ba'zi ilovalarda siz eksport buyruqlarini ham topishingiz mumkin, ular printsipial jihatdan unchalik farq qilmaydi, chunki ulardan foydalanganda butun protsedura yana BMP-dan boshqa qo'llab-quvvatlanadigan boshqa grafik formatni tanlashga to'g'ri keladi.

Konverterlardan foydalanish

Boshqa turdagi tasvirni BMP formatiga aylantirishning eng oson usullaridan biri, standart Windows vositalari va grafik muharrirlaridan foydalanishni eslatib o'tmasdan, avtomatik ravishda ishlaydigan maxsus konvertorlardan foydalanishdir.

Bu erda hamma narsa oddiy. Foydalanuvchi dastur oynasiga aylantiriladigan grafik fayllarni qo'shadi, so'ngra yakuniy formatni (bu holda BMP) tanlaydi va konvertatsiya jarayonini boshlash uchun tugmani bosadi. Yangi shakldagi yakuniy fayllar joylashuvi ilovada sukut bo'yicha o'rnatilgan yoki qo'lda ko'rsatilgan papkada saqlanadi.

Aytgancha, xuddi shu narsa BMP formatini boshqasiga o'tkazish kerak bo'lganda, teskari jarayonga ham tegishli.

Internetdagi ushbu sohadagi ko'plab dasturlar bilan siz bunday o'zgarishlarni onlayn tarzda amalga oshirishga imkon beradigan ko'plab resurslarni topishingiz mumkin. Faqat bu holatda, foydalanuvchi saytga fayllarni yuklaydi, yakuniy formatni tanlaydi va natijani o'z kompyuteriga yuklab oladi. Qabul qiling, dastlabki ikki usul bilan solishtirganda, bu juda qulay emas.

Xulosa

BMP grafik formati haqida qisqacha aytish mumkin bo'lgan hamma narsa shu. Aniq sabablarga ko'ra, fayl tuzilishi nuqtai nazaridan masalaning texnik tomoni ko'rib chiqilmadi. Bunday ma'lumotlar o'rtacha foydalanuvchiga hech narsa aytishi dargumon.

Xulosa qilib aytganda, grafik fayllarni siqilmagan BMP formatiga aylantirish haqida bir necha so'z qo'shmoqchiman. Albatta, uning joriy versiyasi diskda kamroq joy egallaydi. Ammo u hali ham zamonaviyroq siqilgan ma'lumotlar turlaridan farq qiladi. Aslida, BMP formatining o'zini biroz eskirgan deb atash mumkin, chunki bugungi kunda uni kam odam ishlatadi. Shu sababli, siqilgan formatlarni .bmp kengaytmali grafik fayllar turiga aylantirish hozirgi bosqichda aniq amaliy bo'lmagan ko'rinadi.