No kā sastāv bmp attēls? Skatiet, kas ir "BMP" citās vārdnīcās

BMP ir populārs attēlu formāts bez datu saspiešanas. Apskatīsim, kādas programmas var izmantot, lai skatītu attēlus ar šo paplašinājumu.

Iespējams, daudzi jau ir uzminējuši, ka, tā kā attēlu attēlošanai tiek izmantots BMP formāts, šo failu saturu var apskatīt, izmantojot attēlu skatītājus un grafiskos redaktorus. Turklāt dažas citas lietojumprogrammas, piemēram, pārlūkprogrammas un universālie skatītāji, var tikt galā ar šo uzdevumu. Tālāk mēs apskatīsim BMP failu atvēršanas algoritmu, izmantojot īpašu programmatūru.

1. metode: FastStone attēlu skatītājs

Sāksim ar populāro attēlu skatītāju FastStone Viewer.


2. metode: IrfanView

Tagad apskatīsim BMP atvēršanas procesu citā populārā attēlu skatītājā IrfanView.


3. metode: XnView

Nākamais attēlu skatītājs, kurā apskatīsim BMP faila atvēršanu, ir XnView.


4. metode: Adobe Photoshop

Tagad pāriesim pie aprakstītās problēmas risināšanas darbību algoritma aprakstīšanas grafiskajos redaktoros, sākot ar populāro lietojumprogrammu Photoshop.


Šīs metodes galvenais trūkums ir tas, ka Photoshop lietojumprogramma tiek apmaksāta.

5. metode: Gimp

Vēl viens grafikas redaktors, kas var parādīt BMP, ir Gimp.


Salīdzinot ar iepriekšējo metodi, šī ir izdevīga, jo Gimp lietojumprogrammai nav jāmaksā par tās izmantošanu.

6. metode: OpenOffice

Ar šo uzdevumu veiksmīgi tiek galā arī Draw grafiskais redaktors, kas ir iekļauts bezmaksas OpenOffice pakotnē.


7. metode: Google Chrome

BMP var atvērt ne tikai grafiskie redaktori un attēlu skatītāji, bet arī vairākas pārlūkprogrammas, piemēram, Google Chrome.


8. metode: universālais skatītājs

Vēl viena programmu grupa, kas var strādāt ar BMP, ir universālie skatītāji, kas ietver lietojumprogrammu Universal Viewer.


9. metode: krāsošana

Metodes BMP atvēršanai, izmantojot trešās puses instalētās programmas, tika uzskaitītas iepriekš, taču Windows ir savs grafikas redaktors - Paint.


10. metode: Windows fotoattēlu skatītājs

Sistēmā Windows ir arī iebūvēts tikai attēlu skatītājs, ko var izmantot, lai palaistu BMP. Apskatīsim, kā to izdarīt, izmantojot Windows 7 piemēru.


Kā redzat, ir diezgan liels to programmu saraksts, kuras var atvērt BMP attēlus. Un tie nav visi, bet tikai populārākie. Konkrētas lietojumprogrammas izvēle ir atkarīga no lietotāja personīgajām vēlmēm, kā arī no izvirzītajiem mērķiem. Ja jums vienkārši nepieciešams apskatīt zīmējumu vai fotoattēlu, labāk ir izmantot attēlu skatītājus, bet rediģēšanai izmantojiet attēlu redaktorus. Turklāt pat pārlūkprogrammas var izmantot kā alternatīvu skatīšanai. Ja lietotājs nevēlas datorā instalēt papildu programmatūru darbam ar BMP, viņš var izmantot iebūvēto Windows programmatūru, lai skatītu un rediģētu attēlus.

Šis raksts ir par to, kā izskatās bmp grafiskais formāts. Lai gan šis ir viens no vienkāršākiem formātiem, tā kā šim formātam ir daudz variāciju, ne visi punkti ir acīmredzami. Tātad, beidziet liet ūdeni, sāksim.

Formātu struktūras

Bmp formāts (no vārdiem BitMaP - bitu karte, jeb, krieviski, bitu masīvs) ir Windows OS diezgan viegli nolasāms un attēlojams nesaspiests (pārsvarā) attēls, kuram palīdz īpašas API funkcijas.

Vispirms sniegsim grafisku datu attēlojumu bmp formātā (attēls ņemts no MSDN).

Sākumā ir faila galvene (BITMAPFILEHEADER). Tas ir aprakstīts šādi:

bfType nosaka faila tipu. Šeit viņam vajadzētu būt BM. Ja atverat jebkuru BMP failu teksta redaktorā (vai vēl labāk, heksadecimālajā redaktorā), jūs redzēsit, ka pirmās divas rakstzīmes ir BM (no vārda BitMap, kā jūs droši vien jau uzminējāt).
bfIzmērs ir paša faila lielums baitos. Stingri sakot, jums vajadzētu to aprēķināt (kas ir ieteicams), bet es nepareizi uzstādīju faila lielumu (lai gan ne ar nolūku :)) un nebija nekādu problēmu (ACDSee lasīja bez problēmām, mana programma strādāja), bet es jums neiesaku raksti apzināti nepareizi , pēkšņi uzradīsies apzinīga programma, kas salīdzinās šo izmēru ar īsto un nolems, ka tas nav bmp, bet kaut kas cits. Ideālā gadījumā visām programmām, lai pārliecinātos, ka tas ir īsts bmp, nevis viltojums, pirmkārt, jāpārbauda, ​​vai bfType satur "BM" (bez pēdiņām), un, otrkārt, vai bfSize ir vienāds ar faila lielumu .
bfReserved1 un bfReserved2 ir rezervēti, un tiem jābūt nullei.
bfOffBits. Šī ir viena no svarīgākajām jomām šajā struktūrā. Tas parāda, kur sākas pati bitkarte attiecībā pret faila sākumu (vai, kā saka MSDN, "no BITMAPFILEHEADER struktūras sākuma"), kas apraksta attēlu. Tas ir, lai garantētu nokļūt masīva sākumā, jums jāraksta:

typedef struct tag BITMAPINFOHEADER
{
DWORD biSize;
ILGS divplatums;
GARS biAugstums;
WORD biPlanes;
VĀRDS biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
) BITMAPINFOHEADER, * PBITMAPINFOHEADER;

biSize ir pašas struktūras izmērs. Tas ir jāinicializē šādi: bih.biSize = sizeof(BITMAPINFOHEADER);
Šeit atkal pieņemsim, ka bih tiek deklarēts šādi: BITMAPINFOHEADER bih;
biWidth un biHeight iestatiet attēla platumu un augstumu attiecīgi pikseļos.
biPlanes norāda lidmašīnu skaitu. Pagaidām tas vienmēr ir iestatīts uz 1.
biBitCount- bitu skaits pikselī. Tālāk mēs par to runāsim vairāk.
biCompression norāda kompresijas veidu. Nebrīnieties un nebaidieties, ka bmp pēkšņi piedzīvo saspiešanu. Es personīgi neesmu redzējis vairāk par vienu saspiestu bmp (bet es nesaku, ka tie neeksistē). Ja nav saspiešanas, šim karogam jābūt iestatītam uz BI_RGB. Šajā rakstā mēs runājam par nesaspiestu formātu, tāpēc es pat neuzskaitīšu citus karogus. Šķiet, ka JPEG un PNG failos tiek izmantota viena un tā pati struktūra, jo sākot no Windows 98 parādījās opcijas BI_JPEG, kas parāda, ka šī bilde ir JPEG un BI_PNG, ka tā ir PNG (par Jpeg formātu neko nezinu, Es tikko izdarīju šos secinājumus, pamatojoties uz to, kas rakstīts MSDN).
biSizeImage norāda attēla izmēru baitos. Ja attēls ir nesaspiests (tas ir, iepriekšējais lauks ir iestatīts uz BI_RGB), tad šeit ir jāraksta nulle. biXPelsPerMeter Un biYPelsPerMeter apzīmē attiecīgi galīgās ierīces horizontālo un vertikālo izšķirtspēju (pikseļos uz metru), uz kuras tiks izvadīta bitkarte (rastrs). Lietojumprogramma var izmantot šo vērtību, lai atlasītu no resursu grupas vispiemērotāko bitkarti vajadzīgajai ierīcei. Fakts ir tāds, ka bmp formāts būtībā ir no aparatūras neatkarīgs rastrs, tas ir, kad iegūtā izskats nav atkarīgs no tā, uz ko šis rastrs tiek projicēts (tā teikt). Piemēram, attēls izskatīsies vienādi neatkarīgi no tā, vai tas ir uzzīmēts uz monitora ekrāna vai izdrukāts uz printera. Bet ierīču izšķirtspēja ir atšķirīga, un tieši tāpēc, lai izvēlētos piemērotāko attēlu no pieejamajiem, tiek izmantoti šie parametri.
biClrUsed nosaka izmantoto krāsu skaitu no tabulas. Ja šī vērtība ir nulle, rastrs izmanto maksimālo krāsu skaitu, ko pieļauj vērtība biBitCount. Tas attiecas tikai uz saspiestiem attēliem. Ja biClrUsed vērtība nav nulle un biBitCount ir mazāks par 16, tad biClrUsed nosaka pašreizējo pieejamo grafikas programmas vai ierīces draivera krāsu skaitu. Ja biBitCount ir lielāks vai vienāds ar 16, tad biClrUsed nosaka krāsu tabulas izmēru, ko izmanto, lai optimizētu pašreizējo sistēmas paleti.
biClrSvarīgi- tas ir svarīgu krāsu skaits. Nosaka krāsu skaitu, kas nepieciešams zīmējuma attēlošanai. Ja šī vērtība ir 0 (kā tas parasti ir), tad visas krāsas tiek uzskatītas par svarīgām.

BMP formāta veidi

Visi bmp formāta veidi nosacīti var iedalīt divos veidos: palete un nepalete. Tas ir, vai palete tiek izmantota noteiktā formātā vai nē. Lūdzu, ņemiet vērā, ka palete var būt pat bezpaletes formātos, taču tā tur netiek izmantota. Bezpalešu bmps krāsa tiek aprēķināta tieši no bitiem, kas nonāk failā, sākot no noteiktas vietas. Un paletēs katrs baits apraksta vienu vai vairākus pikseļus, un baitu (vai bitu) vērtības ir krāsu indekss paletē. Sākumā es sniegšu tabulu, kurā ir salīdzinātas iespējamās iespējas. Attēla veids (paletes vai bez paletes) ir atkarīgs no tā, cik bitu ir dots uz vienu pikseļu, tas ir, no BITMAPINFOHEADER struktūras biBitCount vērtības.

biBitCountPaletes vai bez paletes formātsMaksimālais iespējamais krāsu skaitsPiezīmes 1 Palete2 Divu krāsu paletes attēls, ne vienmēr melnbalts. Ja rastra bits (kas atrodas tieši zemāk) ir atiestatīts (vienāds ar 0), tas nozīmē, ka šajā vietā ir jāatrodas pirmajai krāsai no paletes, bet, ja iestatīta (vienāds ar 1), tad otrajai. 4 Palete16 Katrs baits apraksta 2 pikseļus. Šeit ir piemērs no MSDN Ja attēla pirmais baits ir 0x1F, tad tas atbilst diviem pikseļiem, pirmā krāsa ir otrā krāsa no paletes (jo atpakaļskaitīšana sākas no nulles), bet otrais pikselis ir. paletes 16. krāsa. 8 Palete256 Viena no visizplatītākajām iespējām. Bet tajā pašā laikā vienkāršākie. Palete aizņem vienu kilobaitu (bet labāk ar to nerēķināties). Viens baits ir viena krāsa. Turklāt tā vērtība ir krāsas numurs paletē. 16 Nav paletes2^16 vai 2^15Šis ir mulsinošākais variants. Sāksim ar to, ka tas ir bez paletes, tas ir, katri divi baiti (viens WORD vārds) rastrā unikāli definē vienu pikseļu. Bet notiek šādi: ir 16 biti un 3 krāsu komponenti (sarkans, zaļš, zils). Bet 16 nevēlas dalīt ar 3. Tāpēc šeit ir divas iespējas. Pirmais ir izmantot nevis 16, bet 15 bitus, tad katram krāsu komponentam ir 5 biti. Tādā veidā mēs varam izmantot ne vairāk kā 2^15 = 32768 krāsas un iegūt trīskāršu R-G-B = 5-5-5. Bet tad vesela daļa no 16 tiek iztērēta veltīgi. Bet tā nu ir tā, ka mūsu acis starp visām krāsām labāk uztver zaļo, tāpēc mēs nolēmām šo vienu mazliet atvēlēt zaļajam komponentam, tas ir, tad mēs iegūstam to. trīskāršs R-G-B = 5-6-5, un tagad mēs varam izmantot 2^16 = 65536 krāsas. Bet visnepatīkamākais ir tas, ka tiek izmantotas abas iespējas. MSDN iesaka, lai atšķirtu izmantoto krāsu skaitu, aizpildiet biClrUsed lauku no BITMAPINFOHEADER struktūras ar šo vērtību. Lai atlasītu katru komponentu, jāizmanto šādas maskas. Formātam 5-5-5: 0x001F zilajam komponentam, 0x03E0 zaļajam un 0x7C00 sarkanajam. Formātam 5-6-5: attiecīgi 0x001F - zils, 0x07E0 - zaļš un 0xF800 sarkans komponents. 24 Nav paletes2^24 Un tas ir vienkāršākais formāts. Šeit 3 ​​baiti nosaka 3 krāsu komponentus. Tas ir, viens komponents katrā baitā. Mēs vienkārši izlasām RGBTRIPLE struktūru un izmantojam tās laukus rgbtBlue, rgbtGreen, rgbtRed. Viņi iet tādā secībā. 32 Nav paletes2^32 Šeit 4 baiti nosaka 3 komponentus. Tomēr viens baits netiek izmantots. To var izmantot, piemēram, alfa kanālam (caurspīdīgumam). Šajā gadījumā ir ērti nolasīt rastru, izmantojot RGBQUAD struktūras, kas aprakstītas šādi:

Datu glabāšana bmp formātā

Nu, tagad mēs nonākam pie visinteresantākās daļas. Pēc BITMAPFILEHEADER un BITMAPINFOHEADER struktūrām nāk palete. Turklāt, ja formāts ir bez paletes, tad tā var nebūt, tomēr ar to nevajadzētu paļauties. Fakts ir tāds, ka tad, kad es tikko sāku saprast bmp formātu, es vienā grāmatā izlasīju, ka, it kā, ja formāts ir bez paletes, tad tam paletes nav vispār. Bija pat divas bildes - formāta diagrammas: viena ar paleti, otra bez. Un tajā laikā es rakstīju programmu, kas cītīgi darbojas ar bmp failiem. Un man bija jāpārvērš ienākošie attēli no 256 krāsām uz 24 bitu (ja tādi ir) pagaidu failos. Un es vienkārši neizveidoju paleti 24 bitu formātā (bfOffBits no BITMAPFILEHEADER struktūras bija vienāds ar sizeof(BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) summu, bet ienākošos 24 bitus atstāju nemainītus. Ar 256 krāsu rasteriem viss darbojās kā nākas, līdz nesaskāros ar 24 bitu attēlu, kura apakšā vajadzīgās daļas vietā bija redzami atkritumi, es uzreiz nesapratu, kas par vainu, līdz nesalīdzināju oriģinālā faila izmēru ar teorētiskā, ja nebūtu paletes Atšķirība izrādījās tieši 1024 baiti (lai gan visiem attēliem, ar kuriem es saskāros, paletes izmērs bija 256 krāsas jeb 1 Kb), vienmēr pārvietojieties pa failu uz rastra sākumu, izmantojot bfOffBits. Palete ir RGBQUAD struktūru masīvs, pat ja paletē netiek izmantotas visas krāsas (bet tikai, piemēram, 16), tad bieži paletei tiek piešķirti 256 lauki A 256 * 4 = 1024, kur 4 ir RGBQUAD struktūras izmērs, tas ir, tas pats tiek iegūts viens kilobaits.

Uzreiz pēc paletes nāk pats rastrs. Šeit lietas kļūst neskaidrākas. Pirmkārt, pikseļi šeit ir aprakstīti, kā rakstīts iepriekš tabulā, atkarībā no formāta. Un tie paši var saturēt krāsu komponentu vērtību (bez paletes), vai arī tie var būt paletes masīva indeksi. Pats attēls tiek ierakstīts rindiņu pa rindiņai. Otrkārt, šķiet, ka attēls ir apgriezts otrādi. Tas ir, vispirms tiek rakstīta apakšējā rinda, pēc tam priekšpēdējā rinda un tā tālāk līdz pašai augšai. Un, treškārt, kā rakstīts, ja rastra rindas lielums nav reizināts ar 4, tad tā tiek polsterēta ar 1 līdz 3 tukšiem (nulles) baitiem, lai rindas garums būtu rindkopas daudzkārtnis. Tas ir visnepatīkamākais. Fakts ir tāds, ka katram formātam ir jāpielāgo šis tukšo baitu skaits (lai gan man patīk tur rakstīt daļu no paletes, es vienkārši nevēlos izveidot papildu “nulles” mainīgos, ja šie baiti tik un tā tiek izlaisti un neviens tās ir vajadzīgas). Es sniedzu tabulu ar formulām, kas parāda, kuram formātam, cik baitu jāpievieno rindas beigās. Tur mainīgais platums, kā jūs varētu uzminēt, nozīmē attēla platumu. Visas šīs formulas tika izveidotas eksperimentāli. Es sniegšu piemēru tikai visbiežāk izmantotajiem formātiem. Pārējo varat uzrakstīt pats.

Programmu piemēri

Jūs varat lejupielādēt visus avotus, es šeit nerakstīšu. Es tikai sniegšu funkcijas ar komentāriem.

Sveiki 1. Bildes izveidošana bmp formātā.
Šeit tiek izveidots monohromatisks attēls. Ir trīs šādu funkciju piemēri: bmp 8, 16 un 24 bitu izveide. Došu tikai par 16 bitiem.

// Izveidosim attēlu bmp formātā 16 biti kā 5-5-5, kas būs vienkārši vienkrāsains
tukšums CreateBmp555 (char * fname, WORD krāsa)
{
ROKTU hFile;
DWORD RW;
int i, j;

// Deklarē nepieciešamās struktūras
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
BYTE palete[1024]; // Palete

// Ņemsim attēlu ar 35 x 50 pikseļiem
int Platums = 35;
int Augstums = 50 ;

memset(Palete, 0, 1024); // Paletē mums ir nulles, aizpildiet tās
memset (&bfh, 0 , sizeof (bfh) );

Bfh.bfType = 0x4D42; // Atzīmēsim, ka tas ir bmp "BM"
bfh.bfOffBits = izmērs (bfh) + izmērs (bih) + 1024 ; // Palete aizņem 1Kb, bet mēs to neizmantosim
bfh.bfSize = bfh.bfOffBits +
izmērs (krāsa) * Platums * Augstums +
Augstums * ((izmērs (krāsa) * Platums) % 4 ); // Aprēķināt gala faila lielumu
memset (&bih, 0 , sizeof (bih) ) ;
bih.biSize = sizeof(bih); // Tā tam ir jābūt
bih.biBitCount = 16 ; // 16 biti uz pikseļu
bih.biClrUsed = 32768 ; // Mēs izmantojam 5-5-5
bih.biCompression = BI_RGB; // Bez saspiešanas
bih.biHeight = augstums;
bih.biWidth = platums;
bih.biPlanes = 1 ; // Jābūt 1
// Un atlikušie lauki paliek 0

HFile = CreateFile(fname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
if (hFile == INVALID_HANDLE_VALUE)
atgriešanās ;

// Uzrakstiet galvenes
WriteFile (hFile, & bfh, sizeof (bfh) , & RW, NULL );
WriteFile (hFile, & bih, sizeof (bih) , & RW, NULL ) ;

// Uzrakstiet paleti
WriteFile(hFile, palete, 1024, &RW, NULL);
par (i = 0 ; i< Height; i++ )
{
par (j = 0 ; j< Width; j++ )
{
WriteFile (hFile, & color, sizeof (color) , & RW, NULL );
}

// Izlīdzināt ar apmali
WriteFile (hFile, Palette, (izmērs (krāsa) * Platums) % 4 , & RW, NULL ) ;
}
CloseHandle(hFile) ;
}

krāsa - attēla krāsa. Šī mainīgā vērtība ir jāaizpilda saskaņā ar pirmo tabulu. Iegūto attēlu varat apskatīt, piemēram, programmā ACDSee. Es tikko mēģināju to atvērt Photoshop, bet izrādījās, ka tas nevar tos izlasīt šajā formātā, bet jūs varat :).

2. piemērs. Attēla konvertēšana no 8 bitu formāta (256 krāsas) uz 24 bitu formātu.

BOOL Convert256To24 (char * fin, char * fout)
{
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
int Platums, Augstums;
RGBQUAD palete[256];
BAITS * inBuf;
RGBTRIPLE * outBuf;
ROKTURIS hIn, hOut;
DWORD RW;
DWORD OffBits;
int i, j;

HIn = CreateFile (fin, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if (hIn == INVALID_HANDLE_VALUE)
atgriezties FALSE;

HOut = IzveidotFailu(bez, VISPĀRĒJS_RAKSTĪT, 0, NULL, IZVEIDOT_VIENMĒR, 0, NULL);
if (hOut == INVALID_HANDLE_VALUE)
{
CloseHandle(hIn);
atgriezties FALSE;
}

// Lasīt datus
ReadFile (hIn, & bfh, sizeof (bfh) , & RW, NULL );
ReadFile (hIn, & bih, sizeof (bih) , & RW, NULL );
ReadFile (hIn, palete, 256 * sizeof (RGBQUAD) , & RW, NULL );

// Novietojiet rādītāju uz rastra sākumu
SetFilePointer (hIn, bfh.bfOffBits, NULL, FILE_BEGIN) ;
Platums = bih.biWidth ;
Augstums = bih.biHeight ;
OffBits = bfh.bfOffBits ;

// Piešķirt atmiņu
inBuf = jauns BAITS [platums];
outBuf = jauns RGBTRIPLE [platums];

// Aizpildiet galvenes
bfh.bfOffBits = sizeof (bfh) + sizeof (bih) ; // Nerakstīsim paleti
bih.biBitCount = 24 ;
bfh.bfSize = bfh.bfOffBits + 4 * Platums * Augstums + Augstums * (Platums % 4 ) ; // Faila lielums

// Un pārējais paliek nemainīgs
// Uzrakstiet galvenes
WriteFile (hOut, & bfh, sizeof (bfh) , & RW, NULL );
WriteFile (hOut, & bih, sizeof (bih) , & RW, NULL );

// Sāksim konvertēšanu
par (i = 0 ; i< Height; i++ )
{
ReadFile(hIn, inBuf, platums, & RW, NULL);
par (j = 0 ; j< Width; j++ )
{
outBuf[ j].rgbtRed = Palete[ inBuf[ j] ] .rgbRed ;
outBuf[ j].rgbtGreen = palete[ inBuf[ j] ] .rgbGreen ;
outBuf[ j].rgbtBlue = palete[ inBuf[ j] ] .rgbBlue ;
}
WriteFile (hOut, outBuf, sizeof (RGBTRIPLE) * Width, & RW, NULL );

// Uzrakstiet atkritumus līdzināšanai
WriteFile (hOut, palete, platums % 4 , & RW, NULL );
SetFilePointer(hIn, (3 * platums) % 4, NULL, FILE_CURRENT) ;
}

dzēst inBuf;
izdzēst outBuf;
CloseHandle(hIn);
CloseHandle(hOut);
atgriezt TRUE;
}

Avota un mērķa failu nosaukumi attiecīgi jānodod funkcijai.

Jūs esat šeit, jo jums ir fails, kura paplašinājums beidzas ar .bmp. Failus ar faila paplašinājumu .bmp var palaist tikai noteiktas lietojumprogrammas. Iespējams, .bmp faili ir datu faili, nevis dokumenti vai multivide , kas nozīmē, ka tie vispār nav paredzēti skatīšanai.

kas ir .bmp fails?

BMP faila formāts sastāv no attēlu kodēšanas specifikāciju kopas, kas ieviestas nesaspiestu rastra attēlu failu ražošanai. Šie bitkartes attēlu faili ir pievienoti ar failu galvenēm, kas ietver bitkartes identifikatorus, kā arī citu informāciju, kas raksturīga attiecīgo BMP failu attēla saturam. BMP failā saglabātais digitālā attēla saturs sastāv no pikseļiem taisnstūra režģī. Šajos BMP failos ietvertos pikseļus var integrēt ar dažādu krāsu dziļumu atkarībā no BMP failu failu galvenēm. Pelēktoņu gradientus var lietot arī .bmp faila pikseļiem, un šos .bmp failus var eksportēt uz plašāk izmantotiem digitālo attēlu failu formātiem ar mazāku izmēru optimālai pārnesamībai.

kā atvērt .bmp failu?

Palaidiet .bmp failu vai jebkuru citu failu savā datorā, veicot dubultklikšķi uz tā. Ja failu asociācijas ir iestatītas pareizi, lietojumprogramma, kas ir paredzēta .bmp faila atvēršanai, to atvērs. Iespējams, jums būs jālejupielādē vai jāiegādājas pareizā lietojumprogramma. Iespējams arī, ka jūsu datorā ir pareizā lietojumprogramma, taču .bmp faili vēl nav ar to saistīti. Šādā gadījumā, mēģinot atvērt .bmp failu, varat norādīt sistēmai Windows, kura lietojumprogramma ir piemērota šim failam. Turpmāk, atverot .bmp failu, tiks atvērta pareizā programma.

lietojumprogrammas, kas atver .bmp failu

Adobe Photoshop CS6 operētājsistēmai Microsoft Windows

Adobe Photoshop CS6 operētājsistēmai Microsoft Windows ir attēlu rediģēšanas un pārvaldības programmatūra, kas lejupielādējama Windows datoros, proti, Windows 7 (bez SP un ar SP1) un Windows XP ar SP3. Šī programmatūra ir aprīkota ar jaunām funkcijām un rīkiem vienkāršai, ātrai, jautrai un uzlabotai digitālo attēlu rediģēšanai. Viena funkcija, kas padara šo programmu uzticamu attēlu rediģēšanai, ir Adobe Mercury Graphics Engine, kas ir dzinēja tehnoloģija, kas nodrošina ātrāku un kvalitatīvu veiktspēju. Content-Aware rīki ir jaunas izstrādātas funkcijas ērtai attēlu retušēšanai, jo varat apgriezt attēlus bez jebkādiem efektiem, automātiski koriģēt izplūšanu vai platleņķa objektīva izliekumus, noņemt sarkano acu efektu un pielāgot krāsu līdzsvaru, piemēram, spilgtumu un kontrastu. Šis attēlu redaktors ir arī komplektā ar automātiskās atkopšanas funkciju, kas var dublēt visus nesaglabātos attēlus, fona saglabāšanas opciju, izplūšanas galeriju, apgriešanas rīku, video izveidi un daudz ko citu. Pateicoties visām šīm jaunajām uzlabotajām funkcijām un mūsdienīgam, lietotājam draudzīgam interfeisam, digitālo fotoattēlu rediģēšana nekad nevar būt tik jautra un vienkārša bez Photoshop CS6.

Adobe Photoshop CS6 operētājsistēmai Mac

Adobe Photoshop CS6 operētājsistēmai Mac

Adobe Photoshop CS6 for Mac ir Creative Suite attēlu pārvaldības programmatūras versija, kas paredzēta tikai Mac datoriem, jo ​​īpaši Mac OS X v10.6 līdz 10.7 64 bitu versijā. Šī attēlu rediģēšanas programma ir komplektā ar jaunu funkciju un rīku komplektu, piemēram, Mercury Graphics Engine, ko izstrādājis tas pats uzņēmums ātrai un augstas kvalitātes attēla uzlabošanai, Content-Aware funkcijas, intuitīvi pārdomāti rīki filmu noformēšanai, darbplūsmas. , aizmiglošanas galerija, apgriešanas rīks un daudz kas cits. Adobe Mercury Graphics Engine darbojas tādā veidā, ka rediģēšanas uzdevums ir viegli un ātri izpildāms. Tas arī ļauj koplietot un migrēt attēlus ar automātiskās atkopšanas un fona saglabāšanas opcijām. Jaunie Content-Aware rīki ir paredzēti vienkāršam un vadāmam attēlu retušēšanas vai uzlabošanas veidam, kas nodrošina apmierinātāku rezultātu. Tas būtībā ļauj jebkuram lietotājam automātiski labot attēlus, apgriezt tos un koriģēt platleņķa objektīva izliekumus.

ACD Systems Canvas 14

ACD Systems Canvas 14

ACD Systems International Inc. ir ACD Systems Canvas 14 izstrādātājs, kas ir tehniska grafikas risinājuma programmatūra, kas ļauj lietotājiem analizēt datus, uzlabot grafiku un viegli un ātri koplietot visu informāciju. Šī programma ir izstrādāta ar pilnvērtīgiem rīkiem, kas palīdz lietotājiem precīzi izveidot tehnisko grafiku un ilustrācijas. Tas sastāv no rediģēšanas rīkiem, kas atšķiras no attēlu rediģēšanas līdz objektu ilustrācijas rīkiem. Jebkuri šīs programmas radītie rezultāti ir labas prezentācijas projektiem, priekšlikumiem un citiem mērķiem jebkurai uzņēmējdarbības nozarei, kas saistīta ar grafiku un inženieriju. Vairāk par funkcijām lietotāji var strādāt ar rastra attēliem un vektorgrafiku, izmantojot vienu un to pašu failu ar opciju rediģēt, mainot objektu izmērus un mērogošanu, zīmējot formas, kā arī ievietojot tinti un aizpildīšanas tintes vai platumus. Ir arī rīks tekstu vai etiķešu un formāta izmēru pievienošanai, kā arī diagrammu izveidei. Izmantojot šo programmu, lietotāji var kopīgot pabeigtos projektus, izmantojot prezentācijas vai publikācijas.

ACD sistēmas ACDSee 15

ACD sistēmas ACDSee 15

ACD Systems ACDSee 15 ir fotografēšanas programmatūra, kurā ir attēlu organizētājs, skatītājs un RAW/attēlu redaktora programma operētājsistēmai Microsoft Windows un Mac OS X 10.6 (Windows XP ar 2. servisa pakotni, Vista, 7 un 8; Mac OS X 10.5, 10.6 , 10.7 un Mountain Lion). To izstrādāja ACD Systems International, Inc. un sākotnēji tika izplatīta kā 16 bitu lietojumprogramma, kas vēlāk tika jaunināta ar 32 bitu versiju. Šī minimālā aparatūras prasība šai lietojumprogrammai ir Intel Pentium III/AMD Athlon procesors vai līdzvērtīgs procesors ar 512 MB RAM (ar 310 MB brīvas vietas cietajā diskā), augstas krāsas displeja adapteris ar 1024 x 768 izšķirtspēju un CD/DVD rakstītājs. ACDSee pārvalda un atbalsta video un audio failus formātos, kas ietver GIF, BMP, JPG, PNG, MP3, PSD, WAV, MPEG un TIFF. Lietotāji var skatīt, rediģēt, pievienot efektus un sakārtot fotoattēlu un video kolekcijas, kuras var kopīgot tiešsaistē. Fotoattēlus var sakārtot, jo tie tiek importēti no kameras vai citas atmiņas ierīces. Tam ir arī karšu skats un ģeogrāfiskās marķēšanas atbalsts, kas ļauj lietotājiem skatīt attēlu atrašanās vietu no kamerām ar iespējotu GPS. Tādas funkcijas kā ātra pārlūkošana, skenēšana, rediģēšana un dublēšanas opcijas atvieglo fotoattēlu šķirošanu pēc datuma un notikuma, kā arī dublējumkopiju glabāšanu kompaktdiskā, DVD un Blu-Ray.

Tika apsvērta neliela programma, kas pārvieto spraitu pa ekrānu, bet diemžēl tā neizskatījās tā, kā mēs vēlētos. Šajā rakstā mēs centīsimies “sakārtot” spraitu.

Mēs ieguvām sprite attēlu no Bmp faila no tiem pašiem failiem, mēs varam uzņemt fona attēlu, peles kursoru un interfeisa elementus. Taču tas, ko redzam uz ekrāna, nav gluži tas, ko gaidījām: attēls izrādījās ačgārni un turklāt ar citām krāsām, nekā prasīts. Tātad, iemācīsimies pareizi lasīt Bmp failus un pagriezt attēlu “no galvas līdz kājām”.

Pēc izstrādātāju lēmuma Bmp faila formāts nav piesaistīts noteiktai aparatūras platformai. Šis fails sastāv no četrām daļām: galvenes, informācijas galvenes, krāsu tabulas (paletes) un attēla datiem. Ja failā tiek saglabāts attēls ar 24 bitu krāsu dziļumu (16 miljoni krāsu), iespējams, trūkst krāsu tabulas, taču mūsu 256 krāsu gadījumā tā ir. Katras faila daļas struktūra, kurā tiek glabāts 256 krāsu attēls, ir norādīta , un atbilstošie ierakstu veidi ir norādīti .

Faila galvene sākas ar paraksti"BM", kam seko faila garums, izteikts baitos. Nākamie 4 baiti ir rezervēti turpmākiem formāta paplašinājumiem, un šī galvene beidzas pārvietošanās no faila sākuma līdz tajā ierakstītajiem attēla datiem. Ar 256 krāsām šī nobīde ir 1078 — tieši tik daudz mums bija jāizlaiž mūsu iepriekšējā programmā, lai tiktu pie datiem.

Informācijas galvene sākas ar savu garumu (tas var atšķirties, bet 256 krāsu failam tas ir 40 baiti) un satur attēla izmērus, izšķirtspēju, krāsu prezentācijas raksturlielumus un citus parametrus.

Attēla platums un augstums ir norādīti rastra punktos un, iespējams, neprasa paskaidrojumus.

Lidmašīnu skaits var izmantot failos ar zemu krāsu dziļumu. Ja krāsu skaits ir 256 vai vairāk, tas vienmēr ir vienāds ar 1, tāpēc šo lauku tagad var uzskatīt par novecojušu, taču saderības labad tas tiek saglabāts.

Krāsu dziļums tiek uzskatīts par vissvarīgāko raksturlielumu tam, kā krāsa tiek attēlota failā, un to mēra bitos uz punktu. Šajā gadījumā tas ir vienāds ar 8.

Saspiešana. To parasti neizmanto Bmp failos, taču tam ir paredzēts lauks galvenē. Parasti tas ir 0, kas nozīmē, ka attēls nav saspiests. Nākotnē mēs izmantosim tikai šādus failus.

Attēla izmērs- atmiņas baitu skaits, kas nepieciešams šī attēla saglabāšanai, neskaitot paletes datus.

Horizontālās un vertikālās izšķirtspējas mēra rastra punktos uz metru. Tie ir īpaši svarīgi, lai saglabātu skenēto attēlu mērogu. Attēlos, kas izveidoti, izmantojot grafiskos redaktorus, šajos laukos parasti ir nulles.

Krāsu skaitsļauj samazināt paletes tabulas izmēru, ja attēlā faktiski ir mazāk krāsu, nekā pieļauj izvēlētais krāsu dziļums. Tomēr praksē šādi faili gandrīz nekad netiek atrasti. Ja krāsu skaits ir maksimālais, ko pieļauj krāsu dziļums, piemēram, 256 krāsas ar 8 bitiem, lauks tiek iestatīts uz nulli.

Pamatkrāsu skaits- nāk no paletes sākuma, un ir ieteicams to attēlot bez kropļojumiem. Šis lauks ir svarīgs, ja maksimālais displeja krāsu skaits bija mazāks nekā Bmp failu paletē. Izstrādājot formātu, acīmredzami tika pieņemts, ka visbiežāk sastopamās krāsas atradīsies tabulas sākumā. Tagad šī prasība praktiski netiek ievērota, t.i., krāsas nav sakārtotas pēc to sastopamības biežuma failā. Tas ir ļoti svarīgi, jo divu dažādu failu paletēs, pat ja tās sastāv no vienādām krāsām, tās (krāsas) būtu citā secībā, kas varētu ievērojami sarežģīt šādu attēlu vienlaicīgu rādīšanu ekrānā.

Informācijas galvenei seko krāsu tabula, kas ir 256 (krāsu skaitā) 4 baitu lauku masīvs. Katrs lauks atbilst kādai krāsai paletē, un trīs no četriem baitiem atbilst šīs krāsas zilajam, zaļajam un sarkanajam komponentam. Katra lauka pēdējais, nozīmīgākais baits ir rezervēts un vienāds ar 0.

Aiz krāsu tabulas ir attēla dati, kas ir rakstīti pa rastra līnijām no apakšas uz augšu, bet līnijas iekšpusē - no kreisās uz labo pusi. Tā kā dažās platformās nav iespējams nolasīt datu vienību, kas ir mazāka par 4 baitiem, katras rindiņas garums tiek pielīdzināts 4 baitu robežai, t.i., ja rindas garums nav reizināts ar četriem, tā ir polsterēta ar nulles. Šis apstāklis ​​ir jāņem vērā, lasot failu, lai gan labāk ir iepriekš pārliecināties, ka visu attēlu horizontālie izmēri ir reizināti ar 4.

Kā jau teicām, faila formāts tika veidots tā, lai būtu universāls dažādām platformām, tāpēc nav pārsteidzoši, ka paletes krāsas tajā tiek glabātas savādāk, nekā tas ir ierasts VGA. Lasīšanas procedūras laikā tiek veikta nepieciešamā pārkodēšana. (Par to, kas ir VGA palete un kā ar to strādāt, mēs runāsim turpmākajos rakstos.)

256 krāsu Bmp failu lasīšanas modulim ir tikai divas procedūras. Kā redzams no saraksta, attēla izmēri ir jānodod ReadBMP faila lasīšanas procedūrai. Tas ir ērti, ja attēls nav pilnībā jāizlasa. Ja izmēri ir zināmi iepriekš, tas nesagādā problēmas, taču būtu labi, ja, izmantojot mūsu moduli, būtu iespējams nolasīt jebkurus attēlus, arī tos, kuru izmērs iepriekš nav zināms. Šim nolūkam tiek nodrošināta procedūra ReadBMPheader, kas nolasa tikai faila galveni. Izsaucot to, var pārbaudīt, vai attēls ir ierakstīts izvēlētajā 256 krāsu formātā, noskaidrot tā izmērus un tikai pēc tam atvēlēt tam atmiņu un ievietot piešķirtajā buferī.

Tagad pievienosim mūsu programmai jaunu moduli. Lai to izdarītu, mēs ierakstīsim tā nosaukumu lietošanas direktīvā, kā arī nodrošināsim masīvu datu glabāšanai par paleti, ko var aprakstīt šādi:

P: masīvs baits;

CreateSprite procedūra, kas izsauc operāciju faila nolasīšanai no jauna moduļa, ir vienkāršota (sk.).

Bmp faila struktūra

Vārds Garums Aizspriedums Apraksts
Faila galvene (BitMapFileHeader)
Tips2 0 Paraksts "BM"
Izmērs4 2 faila lielums
Rezervēts 12 6 Rezervēts
Rezervēts 22 8 Rezervēts
OffsetBits4 10 Attēla nobīde no faila sākuma
Informācijas galvene (BitMapInfoHeader)
Izmērs4 14 Virsraksta garums
Platums4 18 Attēla platums, punkti
Augstums4 22 Attēla augstums, punkti
Lidmašīnas2 26 Lidmašīnu skaits
Bitu skaits2 28 Krāsu dziļums, biti uz punktu
Saspiešana4 30 Saspiešanas veids (0 — nesaspiests attēls)
IzmērsAttēls4 34 Attēla lielums, baiti
XpelsPerMeter4 38 Horizontālā izšķirtspēja, punkti uz metru
YpelsPerMeter4 42 Vertikālā izšķirtspēja, punkti uz metru
Izmantotās krāsas4 46 Izmantoto krāsu skaits (0 ir maksimālais iespējamais konkrētajam krāsu dziļumam)
KrāsasSvarīgi4 50 Pamatkrāsu skaits
Krāsu tabula (palete)
Krāsu tabula1024 54 256 elementi pa 4 baitiem
Attēla dati (bitkartes masīvs)
AttēlsIzmērs1078 Attēls ierakstīts rindās no kreisās puses uz labo un no apakšas uz augšu

Saraksts 1

vienība bmpread; (procedūras darbam ar Bmp) interfeisa tips artype = arrayof byte; arptr = ^artype; bmFileHeader = ieraksts (faila galvene) Typf: vārds; (paraksts ) Izmērs: longint; (faila garums baitos) Res1: vārds; (rezervēts) Res2: vārds; (rezervēts) OfBm: longint; (attēla nobīde baitos (1078)) beigas; bmInfoHeader = ieraksts (informācijas galvene) Izmērs: longint; (galvenes garums baitos (40)) Widt: longint; (attēla platums (pikseļos)) Augstums: garens; (attēla augstums (pikseļos)) Plāns: vārds; (plakņu skaits (1)) BitC: vārds; (krāsu dziļums (biti uz punktu) (8)) Comp: longint; (saspiešanas veids (0 - nē)) SizI: longint; (attēla izmērs baitos) XppM: longint; (horizontālā izšķirtspēja) ((punkti uz metru - parasti 0)) YppM: longint; (vertikālā izšķirtspēja) ((punkti uz metru - parasti 0)) NCoL: longint; (krāsu skaits) ((ja maksimālais atļautais ir 0)) NCoI: longint; (pamatkrāsu skaits) beigas; bmHeader = ieraksts (pilna faila galvene) f: bmFileHeader; (faila galvene) i: bmInfoHeader; (informācijas galvene) p: baitu masīvs; (paletes tabula) beigas; bmhptr = ^bmHeader; (attēla nolasīšana no Bmp faila) procedūra ReadBMP(image:arptr; (masīvs ar attēlu) xim,yim:word; (izmēri) pal:arptr; (palete) faila nosaukums:virkne); (faila nosaukums) (Bmp faila galvenes lasīšana) procedūra ReadBMPheader(header:bmhptr;faila nosaukums:virkne); implementācija ($R-) (attēla nolasīšana no Bmp faila) procedūra ReadBMP(image:arptr; xim,yim:word; pal:arptr; filename:string); var h: bmHeader; i:integer; bmpfile: fails; s: longint; begin assign(bmpfile,faila nosaukums); atiestatīt(bmpfile,1); blockread(bmpfile,h,sizeof(h)); (lasīt galveni) i:= 0 līdz yim-1 sāciet (lasīt rindiņu pa rindiņai) blockread(bmpfile,image^[(yim-i-1)*xim],xim); if (xim mod 4)<>0, tad blockread(bmpfile,s,4 - (xim mod 4)); beigas; aizvērt (bmpfile); ja i ^= 0 līdz 255, sāciet (paletes transformācija) pal^ := h.p shr 2; (zils) pal^ := h.p shr 2; (zaļš) pal^ := h.p shr 2; (sarkans) gals; beigas; (Bmp faila galvenes nolasīšana) procedūra ReadBMPheader(header:bmhptr;faila nosaukums:string); var bmpfile: fails; begin assign(bmpfile,faila nosaukums); atiestatīt(bmpfile,1); blockread(bmpfile,header^,sizeof(header^)); aizvērt (bmpfile); beigas; beigas.

Saraksts 2

(sprite) procedūra CreateSprite(s:string; x,y,dx,dy:integer); var f: fails; (fails ar sprite attēlu) begin getmem(Sprt.Img,sizeof(SpriteArrayType)); (piešķirt atmiņu spraitam) getmem(Sprt.Back,sizeof(SpriteArrayType)); (piešķirt atmiņu buferim) Readbmp(@(Sprt.Img^),Xsize,Ysize,@p,s); Sprt.x:= x; Sprt.y:=y; (iestatiet sākotnējās vērtības) Sprt.dx:= dx; (koordinātas un inkrementi) Sprt.dy:= dy; beigas;

Paziņojums

BMP Rastra attēla faila formāts

BMP (bitkartes fails, no ierīces neatkarīgs bitkartes faila formāts) ir bitkartes faili, ko izmanto digitālo bitkartes attēlu glabāšanai atsevišķi no displeja ierīces. Šis faila veids iepriekš tika izmantots operētājsistēmās Microsoft Windows un OS/2. Termins "rastrs" nāk no programmētāju idejas par bitkarti. BMP attēli parasti ir nesaspiesti vai bez zudumiem saspiesti (piemēram, izmantojot ZIP vai RAR — failā esošo lieko datu dēļ). Mūsdienās vēlamais attēla formāts ir JPG — galvenokārt lielā BMP faila izmēra dēļ, kas var radīt problēmas vai aizkavēšanos, lejupielādējot, nosūtot vai augšupielādējot failus.

Tehniskā informācija par BMP failiem

BMP faili tiek saglabāti kā dažādu izmēru, krāsu un krāsu dziļuma 2D attēli bez datu saspiešanas, krāsu profiliem vai alfa kanāliem. BMP attēli tiek saglabāti no ierīces neatkarīgos bitkartes (DIB) formātos, kas nozīmē, ka attēlam ir krāsas, nevis sistēmas specifikācijas. Tas izskaidro, kāpēc daži BMP attēli dažādos datoros izskatās atšķirīgi. BMP attēlus var skatīt jebkurā ierīcē, tostarp datora un televīzijas ekrānos. Patentu trūkums ir padarījis šo attēla veidu par populāru formātu plašam ierīču klāstam.

Papildinformācija par BMP formātu



 

Varētu būt noderīgi izlasīt:

 



Faila paplašinājums .bmp
Faila kategorija
Piemēra fails (2,7 MiB)
(487,85 KiB)
Saistītās programmas Adobe Photoshop
MS Paint
Microsoft fotoattēlu redaktors
Ota