Dekuji za Vase serialy. To, ze je obvykle nekomentuji, jeste neznamena, ze je nectu.
Dneska jsem to zatim jenom v rychlosti proletnul a mam dve poznamky:
[1] RLE - Mohl byste prosim uvest nejaky priklad, kde jste se s nim setkal v praxi? :) Ja osobne jsem ho videl jenom ve Win 3.1, kde byla timto zpusobem komprimovana bitmapa s uvodni obrazovkou Windows (takovy ten modry obdelnik s logem Windows a napisem). To znamena, ze pokud jsem si ji chtel zmenit, tak jsem musel najit program, ktery umi nacist/ulozit BMP komprimovane RLE.
[2] Slovicko "unik" me ve Vasem popisu par vterin vrtalo hlavou. Myslel jste tim zhruba neco jako "escape sekvenci"? :)
1) popravdě řečeno, znám RLE bitmapy také z úvodních obrazovek Windows. Ještě jsem je viděl použité v nějakých starších hrách, pravděpodobně psaných ve Visual Basicu (Backgammon a spol.). To, že se tato metoda komprimace moc nepoužívá, mě ani neudivuje, dává totiž dost špatné výsledky, a to i v porovnání s podobnými metodami (PCX)
2) ano, je tím myšleno přerušení kontinuálního toku pixelů (v programu to znamená něco na způsob ukončení smyčky for probíhající pro řádek pixelů). Konkrétně jde o konec řádku (viz zmíněné ukončení smyčky), konec bitmapy (doplnění zbytku barvou nula) nebo delta (posun o zadané dx a dy).
Nejak jsem nepochopil, k cemu je dobra ta sekvence "unik - delta" (00 02). Jedine, co me napada, je implementace pruhlednosti, ale myslel jsem, ze to BMP nepodporuje?
Napriklad tehdy, kdyz je ve velkem obrazku informace umistena pouze v casti tohoto obrazku. Vemte si napriklad naskenovany dokument, tam mohou byt tak tricentimetrove okraje na kazde strane (shora, zespodu, zleva i zprava), to muze po naskenovani odpovidat dejme tomu 50 pixelum.
Misto aby se obrazek ulozil jako rastr 1000x1500 pixelu, provede se nejprve unik delta na 51 radek (prvnich 50 radku preskocim, budou bile) a potom se na zacatku kazdeho radku provede delta o 50 pixelu doprava a pred koncem radku (1000-50 pixel) se provede "unik-konec radku".
To stejne je mozne udelat v bilych mezerach mezi odstavci. Dejme tomu, ze budou siroke 20 pixelu, tak se proste napise "unik deltay+20" a je to.
Teoreticky se tim da delka souboru dost zmensit, prakticky je temer vzdy vyhodnejsi pouzit format podporujici algoritmy LZ77 nebo LZW, tj. napr. GIF ci PNG.
Pruhlednost takto nelze resit, protoze misto pro obrazek by se melo pred dekomprimaci "vymazat" barvou pozadi.
Přidal jsem ho k chybě #113426, myslím, že se jedná o ten samý případ. Jenom jsme se, podle časů tvého příspěvku a zadání mého bugu, o pár minut minuli ...