Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
C# .NET + discount 30
Avatar
*smoky*
Člen
Avatar
*smoky*:9.2.2014 19:02

Nazdar,

vysvětlil by mi prosím někdo, jak funguje ukládání obrázku? Např. pokud mám obrázek 100px x 100px ve formátu .png, jak vypadá jeho uložený část, tudíž určitý kód?

Odpovědět
9.2.2014 19:02
Pít, žít, umřít.
Avatar
hanpari
Tvůrce
Avatar
hanpari:13.2.2014 14:31

1/ PNG je komprimovaný formát, takže ti jeho binární zápis nic nenapoví.
2/ Doporučuji ti proto, abys zkoumal bitmapu.
3/ Ulož si obrázek, který chceš zkoumat a ulož ho jako 24-bitovou bitmapu (bmp).
4/ Otevři bmp v notepadu a zjistíš, že tudy cesta nevede.
5/ Musíš použít hexadecimální editor (např. Frhed).
6/ Ten na tebe vyplivne naprosto nesrozumitelný guláš čísel a písmen.
7/ Je to zápis bajtů v hexadecimální (šestnáctkové) soustavě).
8/ Gratuluji, to je to cos hledal :)

Soubor BMP se pak skládá ze dvou základních částí: z hlavičky a z vlastních obrazových dat.
Specifikaci hlavičky si můžeš najít na internetu.

U 24bitové bitmapy obrazová data tvoří trojice bajtů (čísel v rozsahu od 0-255), které se značí jako RGB.
Pořadí by sis měl přečíst v hlavičce.Tyto tři bajty tvoří 1 pixel, čili obrazovkový bod:

RGB(00,00,00) je černý bod, zatímco RGB(ff, ff, ff) je bílý bod. Všechno mezitím jsou ostatní barvy :)
FF je v hexadecimální zápis čísla 255.

Doporučuji ti trochu experimentovat. Pokud by ti nebylo něco jasné, tak se zeptej :)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
13.2.2014 14:31
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
1Pupik1989
Neregistrovaný
Avatar
1Pupik1989:13.2.2014 14:46

PNG (RFC-2083) ani tak složité není. Horší je chunk IDAT. Ten je v Zlib formátu (RFC-1950) a data v něm jsou komprimovaná pomocí algoritmu DEFLATE (RFC-1951). Až data dokážeš rozluštit, tak tě čeká čtení scanline a filtry.
Při každém průchodu je index filtru (0 = none, 1 = Sub, 2 = Up, 3 = Average a 4 = Paeth). Navíc má PNG dvě možnosti ukládání dat. Buď řádkově, nebo progresivně (Adam7 algoritmus).

Rozluštit to je celkem běh na dlouhou trať. Každopdáně na blbnutí v binární soustavě skoro ideální.

 
Nahoru Odpovědět
13.2.2014 14:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.