Formati i të dhënave BMP (bitmap). Si të hapni një skedar .BMP? Si të hapni skedarin bmp në Windows 7

Ky artikull ka të bëjë me atë se si duket formati grafik bmp. Edhe pse ky është një nga formatet më të thjeshta, për faktin se ka shumë variacione të këtij formati, jo të gjitha pikat janë të dukshme. Pra, ndaloni derdhjen e ujit, le të fillojmë.

Formatoni strukturat

Formati bmp (nga fjalët BitMaP - harta bit, ose, në rusisht, grup bit) është një imazh i pakompresuar (kryesisht) që lexohet dhe shfaqet mjaft lehtë në Windows OS, i cili ka funksione të veçanta API që ndihmojnë.

Së pari, le të japim një paraqitje grafike të të dhënave në bmp (foto e marrë nga MSDN).

Në fillim ka një kokë skedari (BITMAPFILEHEADER). Ai përshkruhet si më poshtë:

bfLloji përcakton llojin e skedarit. Këtu ai duhet të jetë BM. Nëse hapni ndonjë skedar BMP në një redaktues teksti (ose më mirë akoma, një redaktues heksadecimal), do të shihni se dy karakteret e para janë BM (nga fjala BitMap, siç ndoshta e keni menduar tashmë).
bfSizeështë madhësia e vetë skedarit në bajt. Në mënyrë të rreptë, ju duhet ta llogarisni atë (gjë që rekomandohet), por unë e vendosa gabimisht madhësinë e skedarit (megjithëse jo me qëllim :)) dhe nuk kishte probleme (ACDSee lexo pa probleme, programi im funksionoi), por nuk ju rekomandoj shkruajeni qëllimisht gabimisht, papritmas do të shfaqet një program i ndërgjegjshëm që do të krahasojë këtë madhësi me atë realen dhe do të vendosë që nuk është bmp, por diçka tjetër. Idealisht, të gjitha programet, për t'u siguruar që është një bmp i vërtetë dhe jo i rremë, së pari duhet të kontrollojnë që bfType të përmbajë "BM" (pa thonjëza) dhe, së dyti, që bfSize të jetë e barabartë me madhësinë e skedarit.
bfRezervuar1 dhe bfRezervuar2 janë të rezervuara dhe duhet të jenë zero.
bfOffBits. Kjo është një nga fushat më të rëndësishme në këtë strukturë. Ai tregon se ku fillon vetë bitmap në lidhje me fillimin e skedarit (ose, siç thotë MSDN, "nga fillimi i strukturës BITMAPFILEHEADER"), i cili përshkruan figurën. Kjo do të thotë, për të qenë të garantuar për të arritur në fillim të grupit, duhet të shkruani:

typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;
GJËRTËSI E GJATË;
GJATE dy Lartësi;
WORD biplane;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrI rëndësishëm;
) BITMAPINFOHEADER, * PBITMAPINFOHEADER;

biSizeështë madhësia e vetë strukturës. Duhet të inicializohet si më poshtë: bih.biSize = sizeof(BITMAPINFOHEADER);
Këtu përsëri do të supozojmë se bih deklarohet si vijon: BITMAPINFOHEADER bih;
Bigjerësia dhe dy Lartësia vendosni gjerësinë dhe lartësinë e imazhit në pixel, përkatësisht.
biavionët specifikon numrin e avionëve. Tani për tani është vendosur gjithmonë në 1.
biBitCount- Numri i biteve për pixel. Më poshtë do të flasim për këtë.
bikompresioni tregon llojin e ngjeshjes. Mos u habitni ose mos u trembni që bmp papritmas përjeton kompresim. Unë personalisht nuk kam parë asnjë bmp të ngjeshur (por nuk po them që nuk ekzistojnë). Nëse nuk ka kompresim, atëherë ky flamur duhet të vendoset në BI_RGB. Në këtë artikull po flasim për formatin e pakompresuar, kështu që nuk do të listoj as flamuj të tjerë. Duket se e njëjta strukturë përdoret në skedarët JPEG dhe PNG, sepse duke filluar nga Windows 98 u shfaqën opsionet BI_JPEG, që tregon se kjo foto është JPEG dhe BI_PNG, se është PNG (nuk di asgjë për formatin Jpeg, Unë sapo i bëra këto përfundime bazuar në atë që është shkruar në MSDN).
biSizeImage tregon madhësinë e figurës në bajt. Nëse imazhi është i pakompresuar (d.m.th., fusha e mëparshme është vendosur në BI_RGB), atëherë këtu duhet të shkruhet një zero. biXPelsPerMeter Dhe biYPelsPerMeter tregojnë, përkatësisht, rezolucionin horizontal dhe vertikal (në pixel për metër) të pajisjes përfundimtare mbi të cilën do të dalë bitmap (raster). Një aplikacion mund ta përdorë këtë vlerë për të zgjedhur nga një grup burimesh bitmap-in më të përshtatshëm për pajisjen e dëshiruar. Fakti është se formati bmp është në thelb një raster i pavarur nga hardueri, d.m.th., kur pamja e asaj që merret nuk varet nga ajo mbi të cilën projektohet (si të thuash) ky raster. Për shembull, një fotografi do të duket e njëjtë, pavarësisht nëse është vizatuar në një ekran monitori apo printuar në një printer. Por rezolucioni i pajisjeve është i ndryshëm, dhe këto parametra përdoren pikërisht për të zgjedhur fotografinë më të përshtatshme nga ato të disponueshme.
biClrUsed përcakton numrin e ngjyrave të përdorura nga tabela. Nëse kjo vlerë është zero, atëherë rasteri përdor numrin maksimal të ngjyrave të lejuara nga vlera biBitCount. Kjo vlen vetëm për imazhet e kompresuara. Nëse biClrUsed është jo zero dhe biBitCount është më pak se 16, atëherë biClrUsed përcakton numrin aktual të ngjyrave të disponueshme të motorit grafik ose të drejtuesit të pajisjes. Nëse biBitCount është më i madh ose i barabartë me 16, atëherë biClrUsed përcakton madhësinë e tabelës së ngjyrave të përdorura për të optimizuar paletën aktuale të sistemit.
biClrE rëndësishme- ky është numri i ngjyrave të rëndësishme. Përcakton numrin e ngjyrave që nevojiten për të përshkruar vizatimin. Nëse kjo vlerë është 0 (siç është zakonisht), atëherë të gjitha ngjyrat konsiderohen të rëndësishme.

Llojet e formatit BMP

Të gjitha llojet e formatit bmp me kusht mund të ndahet në dy lloje: paleta dhe jo-paleta. Kjo do të thotë, nëse paleta përdoret në një format të caktuar apo jo. Ju lutemi vini re se paleta mund të jetë edhe në formate pa paleta, por nuk përdoret atje. Në bmps pa paleta, ngjyra llogaritet drejtpërdrejt nga bitet që hyjnë në skedar, duke filluar nga një vend i caktuar. Dhe në paleta, çdo bajt përshkruan një ose më shumë piksel, dhe vlerat e bajtit (ose biteve) janë indeksi i ngjyrave në paletë. Për të filluar, unë do të jap një tabelë që krahason opsionet e mundshme. Lloji i figurës (paleta ose pa paletë) varet nga sa bit jepen për piksel, domethënë nga vlera biBitCount e strukturës BITMAPINFOHEADER.

biBitCountFormat palete ose jo paleteNumri maksimal i mundshëm i ngjyraveShënime 1 Paleta2 Një paletë me dy ngjyra, jo domosdoshmërisht bardh e zi. Nëse biti i rasterit (i cili është pak më poshtë) rivendoset (e barabartë me 0), atëherë kjo do të thotë që ngjyra e parë nga paleta duhet të jetë në këtë vend, dhe nëse vendoset (e barabartë me 1), atëherë e dyta. 4 Paleta16 Çdo bajt përshkruan 2 piksele. Këtu është një shembull nga MSDN Nëse bajt-i i parë në imazh është 0x1F, atëherë ai korrespondon me dy pikselë, ngjyra e të parit është ngjyra e dytë nga paleta (sepse numërimi mbrapsht fillon nga zero), dhe pikeli i dytë është. ngjyra e 16-të e paletës. 8 Paleta256 Një nga opsionet më të zakonshme. Por në të njëjtën kohë, ato më të thjeshtat. Paleta merr një kilobajt (por është më mirë të mos llogarisni në të). Një bajt është një ngjyrë. Për më tepër, vlera e tij është numri i ngjyrës në paleta. 16 Asnjë paletë2^16 ose 2^15Ky është opsioni më konfuz. Le të fillojmë me faktin se është pa paleta, domethënë, çdo dy bajt (një fjalë WORD) në raster përcaktojnë në mënyrë unike një piksel. Por ja çfarë ndodh: ka 16 bit dhe ka 3 përbërës ngjyrash (E kuqe, Jeshile, Blu). Por 16 nuk dëshiron të pjesëtohet me 3. Prandaj këtu ka dy opsione. E para është të përdorni jo 16, por 15 bit, pastaj ka 5 bit për çdo komponent ngjyrë. Në këtë mënyrë ne mund të përdorim një maksimum prej 2^15 = 32768 ngjyra dhe të marrim një R-G-B të trefishtë = 5-5-5. Por më pas, një pjesë e tërë nga 16 harxhohet kot, por ndodh që sytë tanë, midis të gjitha ngjyrave, e perceptojnë më mirë jeshile, kështu që vendosëm t'ia japim këtë pjesë përbërësit të gjelbër, domethënë, atëherë marrim ngjyrën. trefishtë R-G-B = 5-6-5, dhe tani mund të përdorim 2^16 = 65536 ngjyra. Por gjëja më e pakëndshme është se përdoren të dyja opsionet. MSDN sugjeron që për të dalluar sa ngjyra janë përdorur, plotësoni fushën biClrUsed nga struktura BITMAPINFOHEADER me këtë vlerë. Për të zgjedhur çdo komponent duhet të përdorni maskat e mëposhtme. Për formatin 5-5-5: 0x001F për komponentin blu, 0x03E0 për të gjelbër dhe 0x7C00 për të kuqe. Për formatin 5-6-5: përbërësit 0x001F - blu, 0x07E0 - jeshile dhe 0xF800 të kuqe, përkatësisht. 24 Asnjë paletë2^24 Dhe ky është formati më i thjeshtë. Këtu 3 bajt përcaktojnë 3 komponentë ngjyrash. Kjo do të thotë, një komponent për bajt. Ne thjesht lexojmë strukturën RGBTRIPLE dhe përdorim fushat e saj rgbtBlue, rgbtGreen, rgbtRed. Ata shkojnë në atë rend. 32 Asnjë paletë2^32 Këtu 4 bajt përcaktojnë 3 komponentë. Por, megjithatë, një bajt nuk përdoret. Mund të përdoret, për shembull, për kanalin alfa (transparencë). Në këtë rast, është i përshtatshëm për të lexuar raster duke përdorur strukturat RGBQUAD, të cilat përshkruhen si më poshtë:

Ruajtja e të dhënave në formatin bmp

Epo, tani kemi ardhur në pjesën më interesante. Pas strukturave BITMAPFILEHEADER dhe BITMAPINFOHEADER vjen paleta. Për më tepër, nëse formati është pa paleta, atëherë mund të mos jetë aty, megjithatë, nuk duhet të mbështeteni në të. Fakti është se kur sapo kisha filluar të kuptoja formatin bmp, lexova në një libër që, gjoja, nëse formati është pa paleta, atëherë nuk ka fare paletë. Kishte madje dy fotografi - diagrame formati: njëra me një paletë, tjetra pa. Dhe në atë kohë po shkruaja një program që funksionon me zell me skedarët bmp. Dhe më duhej të konvertoja imazhet hyrëse nga 256 ngjyra në 24-bit (nëse ka) në skedarë të përkohshëm. Dhe thjesht nuk krijova një paletë në 24-bit (bfOffBits nga struktura BITMAPFILEHEADER ishte e barabartë me shumën e madhësisë së(BITMAPFILEHEADER) + madhësisë së (BITMAPINFOHEADER), dhe i lashë ato 24-bitëshe të pandryshuara. Me rastera 256 ngjyrash gjithçka funksionoi siç duhej, derisa nuk hasa në një imazh 24-bitësh që kishte mbeturina të shfaqura në fund në vend të pjesës së kërkuar, nuk e kuptova menjëherë se çfarë nuk shkonte derisa krahasova madhësinë e skedarit origjinal me atë një paletë teorike që do të duhej të ishte aty, nëse nuk do të kishte paletë (edhe pse të gjitha fotografitë që kam hasur kanë një madhësi palete prej 256 ngjyrash, ose 1 Kb), lëvizni gjithmonë nëpër skedar në fillim të rasterit, duke përdorur bfOffBits jo të gjitha ngjyrat përdoren në paleta (por vetëm, për shembull, 16), atëherë shpesh 256 fusha ndahen për paletën A 256 * 4 = 1024. 4 është madhësia e strukturës RGBQUAD, domethënë i njëjti një kilobajt është marrë.

Menjëherë pas paletës vjen vetë rasteri. Këtu gjërat bëhen më konfuze. Së pari, pikselët përshkruhen këtu siç janë shkruar në tabelën e mësipërme, në varësi të formatit. Dhe ato vetë mund të përmbajnë vlerën e përbërësve të ngjyrave (për ato pa paleta), ose mund të jenë indekse të një grupi palete. Vetë fotografia regjistrohet rresht pas rreshti. Së dyti, fotografia duket të jetë me kokë poshtë. Kjo do të thotë, rreshti i fundit shkruhet së pari, pastaj rreshti i parafundit dhe kështu me radhë deri në krye. Dhe, së treti, siç shkruhet në, nëse madhësia e rreshtit të rasterit nuk është shumëfish i 4, atëherë ajo është e mbushur me 1 deri në 3 bajt bosh (zero) në mënyrë që gjatësia e rreshtit të jetë shumëfish i paragrafit. Kjo është gjëja më e pakëndshme. Fakti është se për çdo format duhet të rregulloni këtë numër bajtësh bosh (megjithëse më pëlqen të shkruaj një pjesë të paletës atje, thjesht nuk dua të krijoj variabla shtesë "zero" nëse këto bajt anashkalohen gjithsesi dhe askush ka nevojë për to). Unë ofroj një tabelë me formula që tregojnë se për cilin format sa bajt duhet të shtohen në fund të rreshtit. Atje, ndryshorja Width, siç mund ta merrni me mend, nënkupton gjerësinë e figurës. Të gjitha këto formula u krijuan eksperimentalisht. Unë do të jap një shembull vetëm për formatet më të përdorura. Për pjesën tjetër, mund ta shkruani vetë.

Shembuj të programeve

Ju mund të shkarkoni të gjitha burimet, unë nuk do të shkruaj shumë këtu. Unë do të jap vetëm funksionet me komente.

Përshëndetje 1. Krijimi i një fotografie në formatin bmp.
Këtu krijohet një pamje monokromatike. Ekzistojnë tre shembuj të funksioneve të tilla: krijimi i bmp 8, 16 dhe 24 bit. Unë do të jap vetëm për 16-bit.

// Le të krijojmë një fotografi në formatin bmp 16 bit si 5-5-5, e cila do të jetë thjesht monokromatike
void CreateBmp555 (char * fname, ngjyra WORD)
{
HANDLE hFile;
DWORD RW;
int i, j;

// Deklaroni strukturat e nevojshme
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
Paleta BYTE[1024]; // Paleta

// Le të kemi një imazh prej 35 x 50 piksele
int Gjerësia = 35;
int Lartësia = 50 ;

memset (Palette, 0, 1024); // Në paleta kemi zero, plotësoni ato
memset (&bfh, 0, madhësia e (bfh));

Bfh.bfType = 0x4D42 ; // Le të tregojmë se kjo është bmp "BM"
bfh.bfOffBits = madhësia e (bfh) + madhësia e (bih) + 1024 ; // Paleta merr 1 Kb, por ne nuk do ta përdorim atë
bfh.bfSize = bfh.bfOffBits +
madhësia (ngjyra) * Gjerësia * Lartësia +
Lartësia * ((madhësia e (ngjyrës) * Gjerësia) % 4 ); // Llogaritni madhësinë e skedarit përfundimtar
memset (&bih, 0, sizeof (bih));
bih.biSize = madhësia (bih); // Kështu duhet të jetë
bih.biBitCount = 16; // 16 bit për pixel
bih.biClrUsed = 32768; // Ne përdorim 5-5-5
bih.biCompression = BI_RGB; // Pa kompresim
bih.biLartësia = Lartësia;
bih.biGjerësia = Gjerësia;
bih.biAeroplanë = 1; // Duhet të jetë 1
// Dhe fushat e mbetura mbeten 0

HFile = KrijoFile (fname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
nëse (hFile == INVALID_HANDLE_VALUE)
kthimi ;

// Shkruani kokat
WriteFile (hFile, & bfh, sizeof (bfh) , & RW, NULL );
WriteFile (hFile, & bih, sizeof (bih) , & RW, NULL );

// Shkruani paletën
WriteFile (hFile, Palette, 1024, &RW, NULL);
për (i = 0; i< Height; i++ )
{
për (j = 0; j< Width; j++ )
{
WriteFile (hFile, & ngjyra, madhësia (ngjyra) , & RW, NULL);
}

// Rreshtoni me kufirin
WriteFile (hFile, Palette, (madhësia (ngjyra) * Gjerësia) % 4, & RW, NULL);
}
CloseHandle(hFile);
}

ngjyra - ngjyra e figurës. Vlera e kësaj variabli duhet të plotësohet sipas tabelës së parë. Ju mund ta shikoni foton që rezulton në ACDSee, për shembull. Sapo u përpoqa ta hapja në Photoshop, por doli që nuk mund t'i lexojë ato në këtë format, por ju mundeni :).

Shembulli 2. Konvertimi i një fotografie nga 8-bit (256 ngjyra) në 24-bit.

BOOL Convert256To24 (char * fin, char * fout)
{
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
int Gjerësia, Lartësia;
Paleta RGBQUAD[ 256];
BYTE * inBuf;
RGBTRIPLE * outBuf;
HANDLE hIn, hOut;
DWORD RW;
DWORD OffBits;
int i, j;

Hin = KrijoFile (fin, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
nëse (hIn == INVALID_HANDLE_VALUE)
ktheje FALSE;

HOut = KrijoFile (fout, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
nëse (Hout == INVALID_HANDLE_VALUE)
{
CloseHandle(hIn);
ktheje FALSE;
}

// Lexoni të dhënat
ReadFile (hIn, & bfh, sizeof (bfh) , & RW, NULL );
ReadFile (hIn, & bih, sizeof (bih) , & RW, NULL );
ReadFile (hIn, Palette, 256 * madhësia (RGBQUAD) , & RW, NULL );

// Vendosni treguesin në fillim të rasterit
SetFilePointer (hIn, bfh.bfOffBits, NULL, FILE_BEGIN);
Gjerësia = bih.biGjerësia ;
Lartësia = bih.biGjatësia;
OffBits = bfh.bfOffBits ;

// Alokimi i memories
inBuf = BYTE i ri [Gjerësia];
outBuf = RGBTRIPLE i ri [Gjerësia];

// Plotësoni titujt
bfh.bfOffBits = madhësia e (bfh) + madhësia e (bih) ; // Le të mos shkruajmë një paletë
bih.biBitCount = 24;
bfh.bfSize = bfh.bfOffBits + 4 * Gjerësia * Lartësia + Lartësia * (Gjerësia % 4); // Madhësia e skedarit

// Dhe pjesa tjetër mbetet e pandryshuar
// Shkruani kokat
WriteFile (hOut, & bfh, sizeof (bfh) , & RW, NULL );
WriteFile (hOut, & bih, sizeof (bih) , & RW, NULL );

// Le të fillojmë konvertimin
për (i = 0; i< Height; i++ )
{
ReadFile (hIn, inBuf, Width, & RW, NULL);
për (j = 0; j< Width; j++ )
{
outBuf[ j].rgbtRed = Paleta[ inBuf[ j] ] .rgbE kuqe ;
outBuf[ j].rgbtGreen = Paleta[ inBuf[ j] ] .rgbGreen ;
outBuf[ j].rgbtBlue = Paleta[ inBuf[ j] ] .rgbBlue ;
}
WriteFile (hOut, outBuf, sizeof (RGBTRIPLE) * Gjerësia, & RW, NULL );

// Shkruani mbeturina për rreshtim
WriteFile (hOut, Paleta, Gjerësia % 4, & RW, NULL);
SetFilePointer(hIn, (3 * Gjerësia) % 4, NULL, FILE_CURRENT) ;
}

fshij inBuf;
fshij outBuf;
CloseHandle(hIn);
CloseHandle(hOut);
kthe e vërtetë;
}

Emrat e skedarëve të burimit dhe të destinacionit duhet t'i kalojnë funksionit, përkatësisht.

Shkaku më i zakonshëm i problemeve me hapjen e skedarit BMP është thjesht mungesa e aplikacioneve të përshtatshme të instaluara në kompjuterin tuaj. Në këtë rast, mjafton të gjeni, shkarkoni dhe instaloni një aplikacion që shërben skedarë në formatin BMP - programe të tilla janë të disponueshme më poshtë.

Sistemi i kërkimit

Futni shtesën e skedarit

Ndihmë

E dhënë

Ju lutemi vini re se disa të dhëna të koduara nga skedarët që kompjuteri ynë nuk i lexon ndonjëherë mund të shikohen në Notepad. Në këtë mënyrë do të lexojmë fragmente teksti ose numrash - Vlen të kontrollohet nëse kjo metodë funksionon edhe në rastin e skedarëve BMP.

Çfarë duhet të bëni nëse aplikacioni nga lista është instaluar tashmë?

Shpesh një aplikacion i instaluar duhet të lidhet automatikisht me një skedar BMP. Nëse kjo nuk ndodh, atëherë skedari BMP mund të lidhet me sukses manualisht me aplikacionin e sapo instaluar. Thjesht klikoni me të djathtën mbi skedarin BMP dhe më pas nga lista e disponueshme zgjidhni opsionin "Zgjidhni programin e paracaktuar". Pastaj ju duhet të zgjidhni opsionin "Shiko" dhe të gjeni aplikacionin tuaj të preferuar. Ndryshimet e futura duhet të miratohen duke përdorur opsionin "OK".

Programet që hapin skedarin BMP

Dritaret
MacOS

Pse nuk mund të hap një skedar BMP?

Problemet me skedarët BMP mund të kenë gjithashtu shkaqe të tjera. Ndonjëherë edhe instalimi i softuerit në kompjuterin tuaj që mbështet skedarët BMP nuk do ta zgjidhë problemin. Arsyeja e pamundësisë për të hapur dhe punuar me skedarin BMP mund të jetë gjithashtu:

Shoqatat e papërshtatshme të skedarëve BMP në regjistrimet e regjistrit
- prishja e skedarit BMP që hapim
- Infeksioni i skedarit BMP (viruse)
- shumë pak burim kompjuterik
- shoferë të vjetëruar
- heqja e shtesës BMP nga regjistri i Windows
- instalimi jo i plotë i një programi që mbështet zgjerimin BMP

Rregullimi i këtyre problemeve duhet të rezultojë në hapjen dhe punën e lirë me skedarët BMP. Në rast se kompjuteri juaj ka ende probleme me skedarët, duhet të kërkoni ndihmën e një eksperti që do të përcaktojë shkakun e saktë.

Kompjuteri im nuk shfaq shtesat e skedarëve, çfarë duhet të bëj?

Në cilësimet standarde të sistemit Windows, përdoruesi i kompjuterit nuk e sheh shtesën e skedarit BMP. Kjo mund të ndryshohet me sukses në cilësimet. Thjesht shkoni te "Paneli i Kontrollit" dhe zgjidhni "Shiko dhe Personalizimi". Pastaj duhet të shkoni te "Opsionet e dosjeve" dhe të hapni "Shiko". Në skedën "Shiko" ekziston një opsion "Fshih shtesat e llojeve të skedarëve të njohur" - duhet të zgjidhni këtë opsion dhe të konfirmoni funksionimin duke klikuar butonin "OK". Në këtë pikë, shtesat e të gjithë skedarëve, përfshirë BMP, duhet të shfaqen të renditura sipas emrit të skedarit.

Njoftim

Formati i skedarit të imazhit BMP Raster

BMP (skedar bitmap, format skedari bitmap i pavarur nga pajisja) janë skedarë bitmap që përdoren për të ruajtur imazhet dixhitale bitmap veçmas nga pajisja e ekranit. Ky lloj skedari është përdorur më parë në Microsoft Windows dhe OS/2. Termi "raster" vjen nga ideja e programuesve për një bitmap. Imazhet BMP zakonisht janë të pakompresuara ose të kompresuara pa humbje (për shembull, duke përdorur ZIP ose RAR - për shkak të pranisë së të dhënave të tepërta në skedar). Sot, JPG është formati i preferuar i imazhit - kryesisht për shkak të madhësisë së madhe të skedarit të BMP, e cila mund të shkaktojë probleme ose vonesa gjatë shkarkimit, dërgimit ose ngarkimit të skedarëve.

Informacion teknik rreth skedarëve BMP

Skedarët BMP ruhen si imazhe 2D të madhësive, ngjyrave dhe thellësisë së ngjyrave të ndryshme pa kompresim të të dhënave, profile ngjyrash ose kanale alfa. Imazhet BMP ruhen në formate bitmap (DIB) të pavarura nga pajisja, që do të thotë se imazhi ka ngjyra dhe jo specifikime të sistemit. Kjo shpjegon pse disa imazhe BMP duken të ndryshme në kompjuterë të ndryshëm. Imazhet BMP mund të shihen në çdo pajisje, duke përfshirë ekranet e kompjuterit dhe televizorit. Mungesa e patentave e ka bërë këtë lloj imazhi një format popullor për një gamë të gjerë pajisjesh.

Informacion shtesë në lidhje me formatin BMP

Shpresojmë se ju kemi ndihmuar të zgjidhni problemin tuaj me skedarin BMP. Nëse nuk e dini se ku mund të shkarkoni një aplikacion nga lista jonë, klikoni në lidhjen (ky është emri i programit) - Do të gjeni informacion më të detajuar se ku mund të shkarkoni versionin e sigurt të instalimit të aplikacionit të kërkuar.

Çfarë tjetër mund të shkaktojë probleme?

Mund të ketë më shumë arsye pse nuk mund të hapni skedarin BMP (jo vetëm mungesa e një aplikacioni përkatës).
Së pari- skedari BMP mund të jetë i lidhur gabimisht (i papajtueshëm) me aplikacionin e instaluar për ta mbështetur atë. Në këtë rast, ju duhet ta ndryshoni vetë këtë lidhje. Për ta bërë këtë, klikoni me të djathtën në skedarin BMP që dëshironi të redaktoni, klikoni opsionin "Për të hapur me" dhe më pas zgjidhni programin që keni instaluar nga lista. Pas këtij veprimi, problemet me hapjen e skedarit BMP duhet të zhduken plotësisht.
Së dyti- skedari që dëshironi të hapni thjesht mund të jetë i dëmtuar. Në këtë rast, do të ishte më mirë të gjeni një version të ri të tij, ose ta shkarkoni përsëri nga i njëjti burim (ndoshta për ndonjë arsye në seancën e mëparshme shkarkimi i skedarit BMP nuk mbaroi dhe nuk mund të hapej siç duhet) .

Dëshironi të ndihmoni?

Nëse keni informacion shtesë në lidhje me shtesën e skedarit BMP, ne do të jemi mirënjohës nëse e ndani atë me përdoruesit e faqes sonë. Përdorni formularin e vendosur dhe na dërgoni informacionin tuaj në lidhje me skedarin BMP.

Shumë shpesh, kur punojnë me grafikë, shumë përdorues hasin imazhe në formatin BMP. Sot, pak njerëz e dinë se çfarë është. Tani do të shikojmë më në detaje formatin grafik BMP. Për më tepër, ne jo vetëm që do të gjurmojmë historinë e origjinës dhe evolucionit të tij, por gjithashtu do të ofrojmë disa metoda të thjeshta për ta kthyer atë në formate të tjera të njohura.

Çfarë është formati BMP?

Le të mos hyjmë në shumë detaje teknike. Vini re se BMP është një format për ruajtjen e imazheve grafike në formën e një bitmap bazuar në raster me një shtresë.

Po kjo është e vërtetë. Fillimisht, formati i imazhit BMP u aplikua ekskluzivisht për imazhet raster dhe ishte një shtrirje universale (standarde) për të gjitha grafikat në përgjithësi.

Historia e origjinës

Historia e krijimit të këtij formati është e lidhur pazgjidhshmërisht me Korporatën Microsoft, e cila së pari e zbatoi atë në idenë e saj kryesore - sistemin operativ Windows. Përveç kësaj, pavarësisht konkurrencës së vazhdueshme me Apple, më vonë u njoftua mbështetje për këtë lloj grafike për sistemin operativ OS/2.

Vërtetë, që atëherë formati grafik BMP ka pësuar shumë ndryshime. Fillimisht supozohej se struktura e një imazhi ishte ndërtuar mbi një kombinim katrorësh të vegjël, të njohur sot si pikselë. Besohet se çdo piksel në një imazh mund të përmbajë të dhëna për një thellësi të ndryshme ngjyrash (numri i biteve për njësi të tillë grafike). Vlerat e përdorura për të treguar thellësinë e bitit të ngjyrës janë si më poshtë: 1, 2, 4, 8, 16, 24, 32, 48, 64 bit.

Në këtë rast, për vlerat më të vogla se 8, ngjyra tregohet vetëm duke përdorur indeksin e paletës (tabela) të hijeve, dhe për vlerat mbi indeksin merret nga modeli standard RGB. Kjo e fundit përmban variacione ngjyrash të marra nga përzierja e kuqe, jeshile dhe blu.

Siç është tashmë e qartë, sa më e lartë të jetë thellësia e bitit, aq më e madhe do të jetë madhësia e imazhit përfundimtar. Duhet thënë se formati i skedarit BMP, si në ato kohë të largëta ashtu edhe sot, duket si një lloj mastodoni, sepse madhësia e tij është mjaft e madhe. Kjo për faktin se vetë imazhi është i pakompresuar, krahasuar, të themi, me të njëjtin format JPG. Madhësia e skedarëve me lloje të ndryshme shtesash që përmbajnë të njëjtin imazh mund të ndryshojnë jo vetëm qindra - dhjetëra mijëra herë.

Si të hapni formatin e skedarit BMP?

Sa i përket hapjes së imazheve të këtij lloji, çdo sistem operativ Windows ka mjete të integruara për këtë.

Derisa u krijuan aplikacionet e shikimit, mjeti kryesor i redaktimit mbeti programi origjinal Paint i përfshirë me çdo version të Windows. Në atë kohë, ky aplikacion mbështette ekskluzivisht formatin BMP.

Siç është tashmë e qartë, me zhvillimin e teknologjisë dhe evolucionin e vetë formatit, programi gjithashtu ndryshoi. Sot, aftësitë e Paint janë shumë më të mëdha se ato të versioneve fillestare.

Për më tepër, me ardhjen e programeve për shikimin dhe redaktimin e grafikëve, formati i skedarit BMP u njoftua në mbështetjen teknike dhe në to. Nuk është për t'u habitur, pasi ishte ai që ishte "stërgjyshi" i pothuajse të gjitha shtesave të skedarëve të imazhit të njohura sot.

Mund të gjeni shumë programe për të punuar me të dhëna të tilla grafike. Ndër mjetet e shikimit, për shembull, në Windows mund të përdorni një mjet standard midis aplikacioneve të palëve të treta, paketat softuerike si ACDSee ose Irfan View dhe shumë të tjera janë mjaft të njohura.

Sa i përket redaktimit, mund të përdorni çdo gjë për punë, për shembull, të njëjtin Adobe Photoshop, Corel Draw ose çdo redaktues tjetër grafik që ka edhe një grup minimal mjetesh dhe aftësish.

Mënyra më e thjeshtë për të kthyer formatin BMP

Tani le të shohim se si të ndryshojmë formatin BMP në mënyrat më të thjeshta. Për ta bërë këtë, mund të përdorni të njëjtët redaktues grafikë.

Nëse marrim si shembull aplikacionin standard Paint, fillimisht në të hapet skedari i dëshiruar BMP, pas së cilës zgjidhet komanda "Ruaj si..." nga menyja "File", ku në rrënjë, në vijën fundore. (menuja rënëse), mund të gjeni formate të mbështetura.

Në fakt, në çdo redaktues tjetër grafik, teknologjia për konvertimin e një bitmap është e ngjashme me atë të përshkruar më sipër. Në disa aplikacione mund të gjeni gjithashtu komanda eksporti, të cilat, në parim, nuk janë veçanërisht të ndryshme, pasi gjatë përdorimit të tyre e gjithë procedura përsëri zbret në zgjedhjen e një formati tjetër grafik të mbështetur, përveç BMP origjinal.

Përdorimi i konvertuesve

Një nga mënyrat më të lehta për të kthyer një lloj tjetër imazhi në format BMP, për të mos përmendur përdorimin e mjeteve standarde të Windows dhe redaktuesve grafikë, është përdorimi i konvertuesve të specializuar që funksionojnë automatikisht.

Gjithçka është e thjeshtë këtu. Përdoruesi shton skedarë grafikë që do të konvertohen në dritaren e programit, më pas zgjedh formatin përfundimtar (në këtë rast BMP) dhe shtyp butonin për të filluar procesin e konvertimit. Skedarët përfundimtarë në formën e re do të ruhen në dosjen, vendndodhja e së cilës është caktuar si parazgjedhje në aplikacion ose specifikohet manualisht.

Nga rruga, e njëjta gjë vlen edhe për procesin e kundërt, kur ju duhet të konvertoni formatin BMP në një tjetër.

Me të gjitha programet e shumta në këtë fushë në internet, mund të gjeni shumë burime që ju lejojnë të kryeni transformime të tilla në internet. Vetëm në këtë rast, përdoruesi ngarkon skedarë në sit, zgjedh formatin përfundimtar dhe më pas shkarkon rezultatin në kompjuterin e tij. Pajtohem, në krahasim me dy metodat e para, nuk është shumë i përshtatshëm.

konkluzioni

Kjo është gjithçka që mund të thuhet për formatin grafikë BMP me pak fjalë. Për arsye të dukshme, ana teknike e çështjes për sa i përket strukturës së dosjeve nuk u mor në konsideratë. Të dhëna të tilla nuk ka gjasa t'i tregojnë asgjë përdoruesit mesatar.

Por në përfundim, do të doja të shtoja disa fjalë në lidhje me konvertimin e skedarëve grafikë në formatin e pakompresuar BMP. Sigurisht, versioni i tij aktual merr më pak hapësirë ​​​​në disk. Por ai ende ndryshon nga llojet më moderne të të dhënave të kompresuara. Në parim, vetë formati BMP madje mund të quhet disi i vjetëruar, pasi pak njerëz e përdorin atë sot. Prandaj, konvertimi i formateve të ngjeshur në llojin e skedarëve grafikë me shtesën .bmp duket qartësisht jopraktik në fazën aktuale.

Zgjatja e skedarit .bmp
Kategoria e skedarit
Shembull skedar (2,7 MiB)
(487,85 KiB)
Programe të ngjashme Adobe Photoshop
MS Paint
Redaktori i fotografive të Microsoft
Penel