grafikai néző
Keresi a merevlemez egy tipikus PC, akkor szinte biztosan talál egy csomó kiterjesztésű fájlokat BMP és PCX. Minden valószínűség szerint, ezek a fájlok tartalmazzák bitmap grafika. Ez csak két tagja egy nagy család grafikus fájlformátumot használt PC-k. Mindegyik formátumok a különböző boltokban grafikus információ, és mindegyikük speciális célokra.
Kiterjesztése a fájlnév jelzi, hogy az adatok tárolása, bármilyen formátumban. Például a bővítmény BMP jelentése BMP-fájl támogatja a Windows és OS / 2 (BMP - csökkentése bitmap, azaz kicsit, bitmap) rendszereket. Bmp - ez a „natív” méret rasztergrafika Windows, mivel ez a leginkább megfelel a belső formátum a Windows, ami a rendszer megtartja raszter tömbök.
PCX formátum az első szabványos fájlformátum tárolására rasztergrafika fájlokat az IBM PC számítógépekhez. PCX formátum eredetileg feltalálták tárolására fekete-fehér grafikai által létrehozott fájlok korábbi változata a program PC ecset színező. Ez a formátum a korai 80-as évek. A Microsoft által szerzett engedélyt, és akkor oszlott a Microsoft termékeket. A jövőben a formátum lett alakítva WindowsPaintbrush és kezdett terjedni a Windows. Bár a jelen népszerű formátum csökken, PCX formátumú fájlok, amelyek könnyen elsajátítható bővíteni PCX, még mindig széles körben használják ma.
A bittérkép fájlok jellemzően két módszer egyikével tárolására pixeladatok. A színes pixeles képeket vehet minden 16-nál több millió adat, ezért a pixel színét általában tárolja a 24-bites értéket - 8 bit a vörös, zöld és kék színű alkatrészeket. Ha a kép tartalmaz 1 millió pixel, a fájl mérete egyenlő 3 millió bájt plusz a hossza nem grafikus adatokat. Ha a kép legfeljebb 256 vagy kevesebb színt, a szín információt általában kódolva a palettán. Tárolása helyett az érték a pixel színét a pixel információ jelzi vonal a palettán, és ő viszont tartalmazza a színét. Az számának csökkenése a szükséges bitek a színét a pixel, a fájl mérete csökken (ami mindenkor egy értékes eszköz, mivel a memóriaterület nem szabad).
Példaként, hogy a kép egy millió pixel, amely tartalmaz 256 különböző színekben. Színjelölésére minden egyes pixel 24 bites értéket a túlterhelt pazarló redundancia, mert néhány (vagy talán az összes) a 256 szín többször megismételjük. Tárolására használt színek a fájl jobb kiosztani 768 byte-os színpaletta 256 területeken 24 bites, minden mező egyik színek a képen. Ezután egy pixel színértéke hozzárendelhetők 8 bit, amely egész szám, értéke 0 és 255, jelezve a színek száma a palettán. Most a grafikus rész elegendő 1000768 byte ellen egykori 3000000 bytes tárolásához szükséges a kép használata nélkül a paletta. És még az extra byte nem grafikus része a fájl, akkor is kap egy fájl méretének csökkentése közel kétharmadát.
A legtöbb grafikus fájlformátumot pixelek vannak elrendezve sorban. Ha a kép mérete 1000 1000 pixel, és minden pixel képviseli 8 bit, az első 1000 byte a grafikus része a fájl tartalmazza a színes képpontok a felső sor (balról jobbra), a következő 1000 bájt tartalmazza a színes képpontok a második sort, és így tovább. Ugyanakkor bizonyos formátumok más sorrendben a sorok. Például, a BMP-fájlok kezdődik az alsó sorban, és a felső végén sor a kép. Minden méret grafikus és nem grafikus adatok strukturált a.
PCX fájlok vannak osztva a következő három részből áll: egy fejléc PCX raszteradatok tömb és választható színes tábla. 128 bájtos fejlécet PCX tartalmaz számos területen, beleértve a képmező mérete és a bitek száma kódolásához a szín információ minden egyes pixel. Információs bittérképes tömb préseljük egy egyszerű tömörítési eljárás RLE; választható színű asztal végén a fájl tartalmazza a 256 RGB értékeket, amelyek meghatározzák a színes a kép. PCX formátum eredetileg tervezték adapterek CGA- és EGA-kijelzők és később módosították felhasználásra adapterek VGA adapter és valódi színeket. Coding minden egyes pixel a jelenlegi színes PCX képek állíthatók elő, amelynek mélysége 1, 4, 8 vagy 24 bit.
FaylaPCX fejléc (128 bájt)
- PCX fájl aláírása (1 bájt) - Állandó zászló 10 - Zsoft .PCX
- Változat. (1 bájt) - (0 - Version 2.5, 2 - verzió 2.8 információt a paletta 3 - Version 2.8 nélkül palettainformáció, 5 - Version 3.0).
- Kódolás. (1 bájt) - (1 - kódoló hosszú sorozat).
- Bit / pixel (1 bájt) - A bitek száma per pixel a rétegben.
- Xmin (2 bájt) - a szög koordináták a kép.
- Ymin (2 bájt) - a szög koordináták a kép.
- Xmax (2 bájt) - a szög koordináták a kép.
- Ymax (2 bájt) - a szög koordináták a kép.
- Vízszintes felbontás teremtő berendezés (2 bájt).
- Függőleges felbontás teremtő berendezés (2 bájt).
- Állítsa be a színpaletta (48 bájt).
- Nem használt (1 byte). Fenntartva.
- A számos színes rétegek (1 byte).
- A bájtok száma soronként a szín réteg (2 bájt).
- Palettainformáció (2 bájt) - (1 = színes / fekete-fehér, szürkeárnyalatos = 2).
- Nem használt (58 bájt). Nullákkal töltjük fel, hogy a végén a fejléc.
Állítsa be a színpaletta.
Info paletta tárolják a négy formátumokat. CGA mód, csak az első és a negyedik bájt a fejléc panel. Az első bájt képviseli a háttér színe - elosztjuk 16 megkapjuk az értéket 0 és 15 között negyedik bájt színét jelenti az előtérben. A paletták száma CGA 8, így a szakadék 32 szerezni egy értéket a tartományban 0-7.
Mert EGA mód, az adatok tárolása egy 16 „hármas”. Trojka - egy 3 bájtos értékrend a vörös, zöld és kék színben. Mivel minden érték 0-tól 255-ig meg kell jeleníteni ezeket az értékeket négy lehetséges urs-it az egyes színeket. Ezért, 256 osztva 4 64, így egy 0 szint 63 = 0, C = 64-127 1. szintű, és így da Következő. EGA adapter rendszer BIOS számít 00RGBrgb bájt formátumban kazhogo paletta regiszter. A négy lehetséges értékei BB 00, 01, 10 és 11. Ha meghatározott szinten mindegyik szín, kombinálják őket egy byte, amely kompatibilis BIOS (alapvető rendszer-én IO).
16-színmódok VGA, paletta ismét tárolva a „triple-kah.” Átalakítani egy kompatibilis BIOS méret csúsztassa minden bájt jobbra két bit. Ez az átalakítás automatikusan végrehajtott egy funkciót, vagy egy funkció pcxGetFilePalette pcxDecodePalette.
Ahhoz, hogy a 256-színpaletta következő: Olvassa el a cím verzió mezőt. Ha ez 5, a paletta legyen. Vagy olvassa el a fejléc mező, a bitek száma pixelenként. Ha ez 8, 256 színű palettát kell byt.Prochitat a fájl végére, és számolja vissza 769 bájt. talált érték egyenlő kell legyen a 12, jelezve jelenlétét egy 256 színű palettát.
A fennmaradó képfájl áll kódolt képadatok. Amikor kódolás egy egyszerű algoritmus alapján a módszer hosszú sorozat. Ha a fájl van tárolva számos színes réteg, minden sor a tárolt kép színes rétegek (általában vörös-R, zöld-G, kék-B réteget, és az intenzitás-I)
A kódolási módszer a következő:
Ha mindkét bit X jelentése 1,
<повторитель> = 6 legkevésbé szignifikáns bit X
<данные> = Következő byte X
Mivel telítési ezen algoritmus megköveteli átlagosan 25%, nem-ismétlődő adatok és legalább a jelenlétét közötti eltolás az ismételt adatok, akkor a fájl mérete általában elfogadható.
Image File Format - BMP széles körben használják a Windows és az OS / 2 rendszer. Különösen úgy véljük, a BMP-fájl, amely leírja egy 256 színes kép mérete 1000 1000 pixel. (A formátum egy BMP-fájlt egy kissé eltér attól függően, hogy hány szín a képen levő -. 2, 16, 256, illetve 16,7 millió BMP formátum Windows és OS / 2 is egy kicsit más, mint a leírás a fájl felel meg a változat BMP for Windows ..) A BMP fájl színinformációt minden egyes pixel van kódolva 1, 4, 8, 16, vagy 24 bit (bit / képpont). A bitek száma / pixel, más néven színmélység, meghatározza a maximális számát a kép színeit. A fényképek mélységben 1 bit / pixel, azaz csak két színt, és mélységben 24 bit / pixel -. Több mint 16 millió különböző színben.
A fájl a következő négy fő részből áll: egy 14 bájtos fejlécet fájl, 40 byte-os fejléc, 1024 bájtos színű asztal és egymillió bájt a pixel értékeket. (Az színtáblázat kiosztott 1024 bájt, ahelyett, 768, mivel minden egyes 24-bites mező adunk egy másik asztalhoz, a fel nem használt byte.)
Struktúra formataBMP grafikus fájlt.
1. Cím raszter grafikus file (14 bájt)
1.1. BMP fájl aláírása (2 bájt)
1.2. Fájl mérete (4 byte)
1.3. Nincs használatban (2 bájt)
1.4. Nincs használatban (2 bájt)
1.5. Helye a raszteres adatok tömb (4 byte)
2. Információs fejléc raszteres array (40 bájt)
2.1. A hossza a fejléc (4 byte)
2.2. A kép szélessége (4 byte)
2.3. A kép magassága (4 byte)
2.4. Száma színsíkokban (2 bájt)
2.5. Bit / pixel (2 bájt)
2.6. Tömörítés (4 byte)
2.7. A hossza a bittérkép tömb (4 byte)
2.8. Vízszintes felbontás (4 bájt)
2.9. Függőleges felbontás (4 bájt)
2.10. A kép színeinek száma (4 bájt)
2.11. Az elsődleges színek száma (4 bájt)
3. Színtábla (a hossza 8-tól 1024 byte-ig terjed)
4. A raszter tömb tényleges adatai (hosszváltozó)
1. A BMP fájl első 14 bájtja alkotja a fejlécét. A fájl fejléce három értéket tartalmaz: a BM betűk, amelyek azt jelzik, hogy a grafikus fájlnak BMP formátuma van, egy szám, amely jelzi a fájl méretét és egy számot, amely jelzi, hogy hol található a raszteradat. Az utolsó szám megegyezik a bájtok számával a fájl elejétől. A fájl fejlécében még két mező van fenntartva a jövőbeli igényekhez, és általában nulla értéket tartalmaz.
2. A szükséges nem grafikus adatok rejtve maradnak az információs fejlécben. Az információs fejlécben található mezők közé tartozik többek között a méret (40 bájt a Windows BMP fájlokban), a kép magasságát és szélességét pixelben és a bitek számát pixelenként. A bitenkénti mező kódolásának módjától függően az alábbi értékeket veheti igénybe:
1 bites monokróm képet, és a színtábla két elemet tartalmazzon. Az adat tömb minden bitje egy pixelet kódol. Ha a bit értéke 0, akkor a pixel lesz a táblázat első színe; Ha - 1, a pixel lesz a táblázat második színe.
A 4 bites kép legfeljebb 16 színt tartalmazhat, és a színtábla 16 elemet tartalmaz. Az egyes képpontok színét a színtábla határozza meg négybites index használatával. Például, ha az adatok első bájtja 3Ah, akkor amikor a bitkép megjelenik, az első pixel színét a színtábla negyedik eleme határozza meg, a második pedig a tizenegyedik.
A 8 bites kép legfeljebb 256 színt tartalmazhat, és a színtábla legfeljebb 256 elemet tartalmazhat. Az adatmátrix minden byte határozza meg az egy pixel színét.
A 24-bites kép legfeljebb 2 a színek 24-es erejében. A színtábla üres, és a képpontok színét három bájtos csomagok határozzák meg, amelyek leírják a piros, zöld és kék színintenzitást.
3. A színtáblázat 256 256 bites területet tartalmaz. Minden mezőben az első bájt felelős a szín kék komponenséért, a második a zöld és a harmadik a piros színért. A negyedik bájt nem használatos, és általában 0-ra áll. Ha a színtáblázat első három értéke 0, 192 és 192, akkor ez azt jelenti, hogy a nulla szám megfelel az átlagos intenzitás sárga színének (zöld és piros keverékének). A színtábla meghatározza a képen használt összes színt.
4. A fájl többi része tartalmazza a pixelértékeket. A bájtszekvencia megfelel a kép képpontjainak sorrendjének: balról jobbra, a kép alsó sorától kezdve. Az egyes bájtok értéke a színtábla színszáma. A BMP fájl aktuális raszter tömbjeinek formátuma az egyes képpontok színadatainak kódolásához használt bitek számától függ. 256 színű kép esetén a rasztertípus tényleges adatait tartalmazó rész minden egyes pixelét egy bájt (8 bit) írja le. Ez a képpont leírása nem az RGB színértékeket mutatja, hanem mutatóként szolgál a fájl színtáblájának bevitelére. Így, ha az R / G / B = 255/0/0 az első RGB színértékként van tárolva a BMP fájl színtáblázatában, akkor a rasztertáblában lévő 0-os pixel értéke világos piros színű lesz. A pixelértékeket helyük sorrendjében tárolja balról jobbra, kezdve (általában) a kép alsó sorától. Így a 256 színű BMP fájlban a raszter tömb adatainak első bájtja a kép bal alsó sarkában található pixel színének indexe; a második bájt a szomszédos jobb oldali pixel stb. színének indexét jelzi stb. Ha a bájtok száma mindegyik sorban páratlan, akkor minden sorhoz extra bájtot adunk hozzá, hogy a raszter tömbadatokat a 16 bites határokhoz igazítsuk.
Nem minden BMP fájlnak van egy struktúrája, mint a diagramon. Például a 16 és 24 bit / pixel mélységű BMP fájlok nem rendelkeznek színtáblázattal; ezeken a fájlokban a rasztertábla képpontjainak értékei közvetlenül jellemzik az RGB színértékeket. A fájl egyes szakaszainak tárolására szolgáló belső fájlformátumok is változhatnak. Például a 16 és 256 színű BMP fájlok rasztertájékoztatását egy RLE algoritmussal lehet tömöríteni, amely az azonos kép képpontok szekvenciáit helyettesíti, a szekvenciában lévő képpontok számát és színét meghatározó tokenekkel. A Windows rendszerben az OS / 2 stílus BMP-fájljaival dolgozhat, amelyek a rasztertípus és a színtábla információs fejlécének különböző formátumait használják.
Miután elindította a PCX_BMP.EXE programot <имя графического файла> A szabványos Fnsplit funkció a teljes fájlnevet 4 részre osztja. Ez lehetővé teszi a fájlok PCX és BMP kiterjesztésekkel történő átvitelét a grafikus fájlok képernyőn történő megjelenítéséhez (show_pcx és show_bmp).
A PCX fájlban tárolt kép megjelenítéséhez a fájlfejléc olvasása kezdődik. Ennek segítségével meghatározható, hogy ez a fájl PCX formátumú legyen (a gyártónak meg kell egyeznie a 10-tel), a képméretekkel, a palettáról és a színrétegek számáról. Ezután a fájl végétől a 768 byte-os átmenetet átolvassa a színpaletta készletének elolvasásához és a paletta palettájának kitöltésével a Set_palette értékkel.
Egy BMP fájlban tárolt kép megjelenítéséhez a fájl fejlécét és az információs fejlécet kell olvasni. A program így ellenőrzi, hogy ez a fájl grafikusan formázott-e BMP-ként (az aláírásnak "BM" -nek kell lennie), és felismeri a képméreteket és a színek számát.
Ezután a program elolvassa a színtáblát. Ezt követően a program a Set_ palette funkcióval kitölti a színpalettát a színtáblával kapott értékekkel. Ily módon a kép színei helyesen továbbítódnak. Ha a számítógép több ezer vagy több millió színt képes megjeleníteni egyszerre, akkor nem kell kitöltenie a színpalettát.
char távol * video = (char távol *) 0xA0000000L