ILBM - ILBM
![]() | Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto problémech na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
![]() | |
Přípona názvu souboru | .iff , .lbm |
---|---|
Vyvinul | Elektronické umění |
První vydání | 14. ledna 1985 |
Typ formátu | Formáty obrazových souborů |
Obsahuje | Interchange File Format |
Standard | EA IFF 85: Standard for Interchange Format[1][2][3] |
Otevřený formát ? | Zdrojový kód public domain |
Prokládaná bitmapa (ILBM) je formát obrazového souboru vyhovující Interchange File Format (IFF). Formát pochází z Amiga platforma atd Kompatibilní s IBM systémy, soubory v tomto formátu nebo související formát PBM (Planar Bitmap) se obvykle vyskytují ve hrách z konce 80. a počátku 90. let, která byla buď Amiga porty nebo nechali navrhnout svá grafická aktiva na strojích Amiga.[Citace je zapotřebí ]
Charakteristickým rysem formátu je, že ukládá bitmapy ve formě prokládaného bitová letadla, který dává formátu název; to odráží způsob Amiga grafický hardware nativně čte grafická data z paměti. Jednoduchá forma komprese je podporováno, aby byly soubory ILBM kompaktnější.[4]
V Amize nejsou tyto soubory spojeny s konkrétním přípona souboru, i když se začaly používat na PC systémech, kde se systematicky používají rozšíření, použili a .lbm nebo příležitostně .bbm rozšíření.[Citace je zapotřebí ]
Formát souboru
ILBM je implementací MFF formát souboru skládající se z několika po sobě jdoucích bloků, jejichž pořadí lze do určité míry měnit. Každý blok má jinou funkci a má stejný základní formát. To znamená, že program nemusí číst nebo dekódovat každý blok v souboru, pouze ty, se kterými chce pracovat, nebo ty, kterým rozumí.[4]
Soubory ILBM obvykle obsahují dostatek informací, aby je bylo možné zobrazit programem pro úpravu obrázků, včetně rozměrů obrazu, palety a dat pixelů. Některé soubory byly navrženy tak, aby fungovaly jako palety pro programy pro malování (data v pixelech zůstala prázdná) nebo aby byly sloučeny do jiného obrázku. Díky tomu jsou mnohem flexibilnější, ale také mnohem složitější než jiné formáty, jako je BMP.[Citace je zapotřebí ]
Pro ILBMs BMHD kus a jakékoli další „zásadní“ kusy se musí objevit před TĚLO kus. Jakékoli bloky, které se objeví po TĚLO jsou považovány za „extra“ a mnoho programů je ponechá nepřečtených a nezměněných.[4]
Typ | název | Popis |
---|---|---|
FOURCC | chunkID | "FORMULÁŘ" |
UINT32BE | lenChunk | Délka dat bloku, v bajtech. Nezahrnuje bajt pad. Bude stejná jako velikost souboru minus osm bajtů (toto pole a chunkID nejsou zahrnuty v počtu) |
FOURCC | formatID | „ILBM“ nebo „PBM“ |
BYTE [lenChunk - 12] | obsah | Aktuální data bloku, tvořená dalšími dílčími bloky níže |
BYTE | podložka | Volitelný polstrovaný bajt, pouze pokud lenChunk není násobkem 2. |
BMHD: Záhlaví bitmapy
The BMHD blok určuje, jak má být obrázek zobrazen, a je obvykle prvním blokem uvnitř souboru FORMULÁŘ. Definuje nejen výšku / šířku obrázku, ale také to, kde je vykreslen na obrazovce, jak jej zobrazit v různých rozlišeních obrazovky a zda je obrázek komprimován. Obsah tohoto bloku je následující:[4]
Typ | název | Popis |
---|---|---|
UINT16BE | šířka | Šířka obrázku v pixelech |
UINT16BE | výška | Výška obrázku v pixelech |
INT16BE | xOrigin | Kde na obrazovce je v pixelech levý horní roh obrázku. Hodnota je obvykle 0,0, pokud obrázek není součástí většího obrázku nebo není na celou obrazovku. |
INT16BE | yorigin | |
UINT8 | numPlanes | Počet letadel v bitmapě; 1 pro černobílý tisk, 4 pro 16 barev, 8 pro 256 barev nebo 0, pokud existuje pouze barevná mapa, a žádná obrazová data. (tj. tento soubor je pouze barevná mapa.) |
UINT8 | maska | 1 = maskovaný, 2 = průhledná barva, 3 = laso (pro MacPaint). Data masky se nepovažují za bitovou rovinu. |
UINT8 | komprese | Pokud je 0 pak nekomprimováno. Pokud 1, pak jsou obrazová data komprimována RLE. If 2 "Vertical RLE" od Deluxe Paint pro Atari ST. Teoreticky jsou možné i jiné hodnoty představující jiné kompresní metody. |
UINT8 | pad1 | Při čtení ignorovat, pro budoucí kompatibilitu nastavit na 0 při psaní |
UINT16BE | transClr | Průhledná barva, užitečné pouze tehdy, když maska >= 2 |
UINT8 | xAspect | Poměr pixelů, poměr šířka: výška; slouží k zobrazení obrazu v různých rozlišeních pro 320x200 5: 6 nebo 10:11 |
UINT8 | yAspect | |
INT16BE | pageWidth | Velikost obrazovky, na které se má obrázek zobrazit, v pixelech, obvykle 320 × 200 |
INT16BE | výška stránky |
TĚLO: Obrazová data
The TĚLO blok je obvykle poslední blok v souboru,[4] a největší[Citace je zapotřebí ].
V souborech ILBM TĚLO chunk ukládá skutečná obrazová data jako prokládané bitplany (a volitelnou masku) po řádcích. Bitové roviny se objevují nejprve od 1 do n, poté rovina masky. Pokud je obrázek nekomprimovaný, pak bude každý řádek tvořen (šířka + 15) / 16
16bitové hodnoty (tj. Jeden bit na pixel, zaokrouhlený nahoru na nejbližší násobek 16 bitů). Pokud je komprimován, pak je každý řádek komprimován samostatně a při komprimaci je vždy násobkem 16 bitů.[4]
V souborech PBM se TĚLO blok je jednodušší, protože nekomprimovaný je to jen nepřetržitý proud bajtů obsahujících obrazová data.[Citace je zapotřebí ]
Komprese
Pokud je obraz komprimován, každý řádek dat (ale ne každá bitová rovina) je komprimován jednotlivě, včetně dat masky, pokud jsou k dispozici. Komprese je různá RLE komprese pomocí příznaků. Lze jej dekódovat následujícím způsobem:[4]
- Smyčkujte, dokud nebudeme mít [Konečná délka] dat v hodnotě bajtů (konečná délka vypočítaná z velikosti obrázku.)
- Zatímco [Délka dekomprimovaných dat] <[Konečná délka]:
- Přečíst bajt [Hodnota]
- Pokud [Hodnota]> 128, pak:
- Přečtěte si další bajt a odešlete jej (257 - [hodnota]) krát.
- Posun vpřed o 2 bajty a návrat ke kroku 1.
- Jinak pokud [Hodnota] <128, pak:
- Přečtěte a odešlete další [hodnota + 1] bajtů
- Posunout vpřed [hodnota + 2] bajty a vrátit se ke kroku 1.
- Jinak [Hodnota] = 128, opusťte smyčku (zastavte dekompresi)
Pro rutinu komprese je nejlepší kódovat 2bajtový opakovaný běh jako replikovaný běh, kromě případů, kdy předchází a následuje doslovný běh, v takovém případě je nejlepší sloučit tři do jednoho doslovného běhu. Při replikaci vždy zakódujte> 3 bajtová opakování.[4]
CAMG: Režim Amiga
A CAMG chunk je specificky pro počítač Commodore Amiga. Ukládá DLOUHÝ „režim výřezu“. To vám umožní specifikovat režimy zobrazení Amiga jako "dual playfield" a "hold and modify". Mimo hry Amiga to není překvapivé.[Citace je zapotřebí ]
Typ | název | Popis |
---|---|---|
UINT32BE | viewportMode | bitové příznaky; přímo interpretováno hardwarem Amiga |
Pokud potřebujete převést nebo zobrazit soubory, které mohou obsahovat smysluplné bloky CAMG, přečtěte si níže „Poznámky k práci se soubory ILBM“.
CMAP: Paleta
The CMAP blok obsahuje paletu obrázku a skládá se z 3bajtových hodnot RGB pro každou použitou barvu. Každý bajt je mezi 0 a 255 včetně. Kus je 3 × počet barev
bajtů dlouhý. Počet barev v paletě bude 2 ^ numBitplanes
. Tento blok je volitelný a použije se výchozí paleta, pokud není k dispozici. Je možné mít méně položek, než se očekávalo (např. 7 barev pro bitmapu „16 barev“ ve 4 rovinách.) Pamatujte, že pokud má lichý počet barev, podle specifikace IFF bude blok vyplněn jednou byte, aby byl sudý počet bytů dlouhý, ale bajt pad není zahrnut do pole délky bloku.[4]
CRNG: Barevná škála
Část barevného rozsahu je „nestandardní“. Používá ho program Deluxe Paint společnosti Electronic Arts k identifikaci souvislé škály barevných registrů nebo „škály odstínů“ a cyklování barev. Může jich být nula nebo více CRNG bloky v souboru ILBM, ale všechny by se měly objevit před TĚLO kus. Deluxe Paint normálně zapíše 4 bloky CRNG do ILBM, když jej uživatel požádá o "Uložit obrázek".[4]
Typ | název | Popis |
---|---|---|
INT16BE | polstrování | 0x0000 |
INT16BE | hodnotit | Rychlost barevného cyklu. Jednotky jsou takové, že rychlost 60 kroků za sekundu je reprezentována jako 214 = 16384. Nižší rychlosti lze získat lineárním měřítkem: pro 30 kroků / s, rychlost = 8192. |
INT16BE | vlajky | Vlajky, které řídí paletu barev mezi barvami. Pokud bit0 je 1, barvy by měly cyklovat, jinak je tento rozsah barevného registru neaktivní a neměl by mít žádný účinek. Pokud bit1 je 0, barvy cyklují nahoru, tj. Každá barva se přesune do další indexové polohy v barevné mapě a nejvyšší barva v rozsahu se posune dolů do nejnižší polohy. Pokud bit1 je 1, barvy cyklují v opačném směru. Pouze ty barvy mezi nízký a vysoký položky v barevné mapě by měly cyklovat. |
UINT8 | nízký | Index první položky v barevné mapě, která je součástí tohoto rozsahu. |
UINT8 | vysoký | Index poslední položky v barevné mapě, která je součástí tohoto rozsahu. |
CCRT: Barevné cyklování
Program Commodore Graphicraft používá CCRT pro Rozsah barevného načasování a načasování. Tento blok obsahuje strukturu CycleInfo. Jako CRNG je to nestandardní část.[4]
Typ | název | Popis |
---|---|---|
INT16BE | směr | Směr cyklu: 0 = žádné cyklování, 1 = vpřed, -1 = vzad |
UINT8 | nízký | vybrán nejnižší barevný registr |
UINT8 | vysoký | vybrán nejvyšší barevný registr |
INT32BE | delaySec | Sekundy mezi změnou barev |
INT32BE | delayuS | Mikrosekundy mezi změnou barev (přidáno do delaySec získat celkovou dobu zpoždění) |
INT16BE | polstrování | 0x0000 |
Data jsou podobná a CRNG kus. Program by pravděpodobně použil pouze jednu z těchto dvou metod vyjádření dat barevného cyklu. Pokud chcete sdělit tyto informace DeluxePaint i Graphicraft, můžete napsat oba.[4]
DEST: Kombinování bitové roviny
Volitelná vlastnost DEST je způsob, jak řídit, jak rozptýlit nula nebo více zdrojových bitplanes do hlubšího cílového obrazu. Někteří čtenáři mohou DEST ignorovat.[4]
Typ | název | Popis |
---|---|---|
UINT8 | numPlanes | Počet bitových letadel ve zdrojovém obrázku |
UINT8 | pad1 | nepoužitý; pro konzistenci použijte 0 |
UINT16BE | letadlo | Jak vybrat letadla a rozptýlit je do cílového obrazu |
UINT16BE | planeOnOff | Výchozí data pro výběr z letadla |
UINT16BE | planeMask | Vybírá, do kterých bitcoinů se mají ukládat |
Počet bitů hloubky nízkého řádu v rovině planePick, planeOnOff a planeMask odpovídá jednotlivě cílovým bitplanům. Bit 0 s bitplane 0 atd. Všechny bity vyššího řádu by měly být ignorovány.[4]
„1“ bity v planePick znamenají „umístit další zdrojovou bitovou rovinu do této bitové roviny“, takže počet bitů „1“ by se měl rovnat numPlanes. „0“ bitů znamená „vložit odpovídající bit z planeOnOff do této bitové roviny“.[4]
Bity v rovině brány brány masky do cílové bitové roviny: „1“ bity znamenají „zapisovat do této bitové roviny“, zatímco „0“ bity znamenají „nechat tuto bitovou rovinu samotnou“. Běžný případ (s č DEST chunk) je ekvivalentní s planePick = planeMask = (2 ^ numPlanes) - 1
.[4]
Nezapomeňte, že čísla barev jsou tvořena pixely v cílové bitmapě (hloubkové roviny hloubky), nikoli ve zdrojové bitmapě (hluboké roviny numPlanes).[4]
GRAB: Hotspot
Volitelné URVAT blok vyhledá „úchyt“ nebo „aktivní bod“ obrázku vzhledem k jeho levému hornímu rohu, například když je použit jako kurzor myši nebo „štětec“. Je to volitelné.[4]
Typ | název | Popis |
---|---|---|
INT16BE | X | Souřadnice X hotspotu v pixelech vzhledem k levému hornímu rohu obrázku |
INT16BE | y | Souřadnice Y aktivního bodu v pixelech vzhledem k levému hornímu rohu obrázku |
SPRT: objednávka Z.
The SPRT chunk označuje, že obrázek má být sprite. Mělo by tedy mít rovinu masky nebo průhlednou barvu a nemělo by to být na celou obrazovku. To, jak je to řešeno, závisí na programu, který obrázek používá. Jedinými uloženými daty je pořadí sprite, které používá mnoho programů k umístění sprite do popředí (sprite pořadí 1 se objeví za jedním z pořadí 0 atd.) Je volitelné.[4]
Typ | název | Popis |
---|---|---|
UINT16BE | objednat | Pořadí Z obrazu (0 je nejblíže popředí, větší čísla jsou dále / vzadu) |
TINY: Náhled
The DROBNÝ blok obsahuje malý náhled obrázku pro různé grafické programy, včetně programu Deluxe Paint. Je komprimovaný a má podobný formát jako TĚLO kus.[Citace je zapotřebí ]
Typ | název | Popis |
---|---|---|
UINT16BE | šířka | Šířka miniatury v pixelech |
UINT16BE | výška | Výška miniatury v pixelech |
BYTE[] | data | Pixel data, uložená přesně stejným způsobem jako TĚLO kus. Použijte přesně stejný algoritmus a dosaďte šířku a výšku z DROBNÝ kus místo těch, které byly odebrány z BMHD kus. |
Poznámky k práci s ILBM
Barevné mapy
Soubor ILBM někdy obsahuje pouze barevnou mapu a žádná obrazová data. Často se používá k ukládání palety barev, které lze na obrázek použít samostatně. V tomto případě by měl být blok BODY prázdný a pole numPlanes v bloku BMHD bude 0.[4]
Hluboké obrázky
Některé soubory ILBM obsahují spíše „pravé barvy“ než indexované barvy. Tyto takzvané soubory „hlubokých obrazů“ nemají žádný blok CMAP a obvykle mají 24 nebo 32 bitplanes. Při standardním uspořádání bitevních letadel bude na prvním místě nejméně významný bit červené složky:[4]
R0 R1 R2 R3 R4 R5 R6 R7 G0 G1 G2 G3 G4 G5 G6 G7 B0 B1 B2 B3 B4 B5 B6 B7
Pokud existuje 32 bitových rovin, bude posledních 8 bitových rovin alfa kanál:
R0 R1 ... R7 G0 ... G7 B0 ... B6 B7 A0 A1 A2 A3 A4 A5 A6 A7
Obrázek neobsahující žádnou mapu barev a pouze 8 bitplanes může být obrázkem ve stupních šedi:
I0 I1 I2 I3 I4 I5 I6 I7
Extra napůl Brite
Pokud soubor ILBM obsahuje blok CAMG, ve kterém je nastaven bit 7 (tj. 0x80 v šestnáctkové soustavě). Soubor očekává, že využije režim EHB (Extra Half-Brite) čipsetu Amiga. Barevná mapa nebude mít více než 32 záznamů, ale obrázek bude mít 6 bitplanes. Nejvýznamnější bitová rovina by měla být považována za vlajku, pokud není nastavena, použijte dolních 5 bitů jako index do barevné mapy jako obvykle. Když je nastaven příznak; použijte dolních 5 bitů jako index do barevné mapy, ale skutečná barva, která má být použita, by měla být o polovinu jasnější, čehož lze dosáhnout posunutím složek RGB barvy o jeden bit doprava. Můžete také vytvořit barevnou mapu se 64 položkami a zkopírovat dolních 32 položek do horní poloviny a převést je na poloviční jas; pak použijte všech 6 bitplanes jako barevný index.[4]
Obrázky PBM nemohou existovat v režimu extra polovičního brite.[Citace je zapotřebí ]
Podržet a upravit
Pokud soubor ILBM obsahuje blok CAMG, ve kterém je nastaven bit 11 (tj. 0x800 v hexadecimálním formátu), soubor očekává, že využije režim HAM (Hold-And-Modify) čipové sady Amiga. Ve formátu HAM6 bude mít barevná mapa až 16 záznamů, ale obrázek bude mít 6 (nebo možná 5 bitplanes). Ve formátu HAM8 bude mít barevná mapa až 64 záznamů, ale obrázek bude mít 8 (nebo možná 7 bitplanes).[4]
Poslední dva bitcoiny (pokud lichý počet bitcoinů předpokládá navíc bitový letoun, který je vždy 0) jsou řídicí příznaky, které označují, jak používat první 4 (nebo 6) bitplany.[4]
Kontrolní vlajky | Popis |
---|---|
00 | Normálně používejte bitplany 0-3 (nebo 0-5) jako index barevné mapy |
10 | Použijte barvu předchozího pixelu, ale nahraďte modrou komponentu bity z bitplanes 0-3 (nebo 0-5) |
01 | Použijte barvu předchozího pixelu, ale nahraďte červenou komponentu bity z bitplanes 0-3 (nebo 0-5) |
11 | Použijte barvu předchozího pixelu, ale nahraďte zelenou komponentu bity z bitplanes 0-3 (nebo 0-5) |
Pokud je první pixel skenovací čáry modifikačním pixelem, upravte a použijte barvu okraje obrázku.[4]
Všimněte si, že při použití 4 bitů k úpravě barevné komponenty byste měli použít 4 bity v horních 4 bitech komponenty A v dolních 4 bitech (aby nedošlo ke snížení celkové barevné škály). Při použití 6 bitů je to méně důležité, ale stále můžete dát 2 nejvýznamnější bity modifikačních bitů do nejméně významných dvou bitů barevné složky.[4]
Obrázky PBM nemohou existovat v režimu pozastavení a úpravy.[Citace je zapotřebí ]
Utility
Většina nástrojů, které pracují se soubory ILBM a BBM, jsou spíše ze dne, například MacPaint nebo Deluxe Paint. IrfanView umožňuje prohlížení souborů, je zdarma pro nekomerční použití a může fungovat pod Linuxem.[Citace je zapotřebí ] Netpbm může převádět obrázky z ILBM na své vlastní PPM formát[5] a zpět.[6] Inspirováno barvou Deluxe GrafX2 pixelový grafický editor může načítat a ukládat soubory ILBM. ImageMagick a GraphicsMagick lze také zobrazit a převést obrázky ILBM.
Poznámky
V Velitel Keen Dreams série her, pro titulní obrazovky se používají komprimované samostatné obrázky ILBM, ale hra nečte většinu částí ILBM. Důvodem je, že obrázky byly upraveny v programu DeluxePaint a poté importovány přímo do souborů hry.[Citace je zapotřebí ]
Viz také
Reference
- ^ Jerry Morrison (01.01.1985). „EA IFF 85: Standard for Interchange Format Files“. Elektronické umění. Citováno 2014-03-06.
- ^ Jerry Morrison (01.01.1986). ""ILBM „IFF Interleaved Bitmap“. Elektronické umění. Archivovány od originál dne 2014-06-13. Citováno 2014-03-06.
- ^ James D. Murray, William vanRyper (duben 1996). „Encyklopedie formátů grafických souborů, druhé vydání“. O'Reilly. ISBN 1-56592-161-5. Citováno 2014-02-27.CS1 maint: používá parametr autoři (odkaz)
- ^ A b C d E F G h i j k l m n Ó p q r s t u proti w X y z Hyperion Entertainment a přispěvatelé (8. června 2012). „ILBM IFF Interleaved Bitmap“. Citováno 2018-07-30.CS1 maint: používá parametr autoři (odkaz)
- ^ Jef Poskanzer, Ingo Wilken (12. listopadu 2014). „ilbmtoppm“. Citováno 2019-06-13.CS1 maint: používá parametr autoři (odkaz)
- ^ Jef Poskanzer, Ingo Wilken (28. června 2015). „ppmtoilbm“. Citováno 2019-06-13.CS1 maint: používá parametr autoři (odkaz)
externí odkazy
- PNG2ILBM Převádí soubory PNG do formátu ILBM. Teoreticky může převádět libovolné PNG, včetně kanálů s alfa kanálem a / nebo 16bitové hloubky na kanál. Podporuje převzorkování, kvantování, dithering, zachování barevného registru nebo přepsání na libovolných bitplanech od 1 do 8, včetně Extra-HalfBrite.
- Grafický workshop 1.1R od poloviny 90. let lze převádět za do všech variant souborů ILBM; podporuje řadu dalších formátů obrazových souborů. Je datováno, ale stále funguje i na Windows 10, když běží v režimu kompatibility se systémem Windows XP. K dispozici je také novější komerční verze známá jako Profesionální grafický workshop s mnohem modernějším uživatelským rozhraním (zdá se být v polovině 00. let), které je však také datováno dnešními standardy.
- Ultimate Paint umí číst, zapisovat a zobrazovat animace barevných cyklů palet.
- XnView je nconvert je zdarma a aktuální převodník příkazového řádku.
- Image Converter Plus je program, který převede soubory ILBM do libovolného počtu formátů. Zatímco plná verze není zdarma, demo verze přidává vodoznak, který lze odstranit.
- Paint Shop Pro 7.04 a další starší verze PSP umí číst a zapisovat ILBM, ale mohou číst pouze soubory PBM. PSP7 dostane zvláštní zmínku, protože sharewarová verze má chybu, která umožňuje přeskočit mechanismus vypnutí hodnocení jednoduše otevřením souboru (tj. Upravit zástupce tak, aby se soubor vždy otevřel a nebudete se obtěžovat).