Dne 20.3.2012 13:09, Jakub Vojáček napsal(a): > Dobrý den, > > pracuji na parseru PNG obrázků a narazil jsem na pár problémů s filtry. > Postouji podle návodu http://www.root.cz/clanky/radkove-filtry-v-png/ > a zasekl jsem se hned u prvního (sub) filtru. Nevím, jak mám reagovat to, > když mi výsledek po odečtení podteče (například 128-255).
To moc nechápu. Pokud PNG parsuješ, tj. čteš, tak neodečítáš, ale naopak zpátky přičítáš. Jinak je to ale klasická osmibitová bezznaménková aritmetika, tj. modulo 256, to máš IMHO správně. > RGB nemůže mít záporné hodnoty, mám tedy na výsledek zavolat funkci abs? > Podobný problém nastává, > pokud výsledek přeteče (je vyšší než 255). Mám vše vyšší než 255 > zaokrouhlovat na 255? Nebo mám > použít modulo 256? Ani jedno z vyše uvedených mi myslím nefunguje správně, > protože složky RGB by > měly nabývat pouze hodnot 0, 128, 255 (jedná se o interpet jazkyka > brainloller) a mně tam vznikají > složky jako 1, 254, 127, ... možná spíš od sebe odečítáš špatná čísla :-) > Také bych měl dotaz na čtvrtý filtr (filtr s paeth prediktorem). Mají se tam > porovnávat pixely, > ale jediný způsob, na který jsem přišel, jak porovnat pixely je sečíst > všechny složky rgb (self.sum) > a porovnávat je. Je to tak správně? Nenech se zmást, všechny filtry pracují na úrovni odpovídajících si bajtů, nikoli celých pixelů (pokud to náhodou není 8bitový čb nebo 8bitový s paletou, kdy bajt = pixel). Odpovídajícími míním, že se např. odečítá bajt zelené složky od dalšího bajtu zelené složky ap. -- Zdraví, Michal Molhanec _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
