Že jsou programátoři z úplně jiné galaxie než grafici je jasné. Lidé v Adobe na tom asi nejsou jinak. Flash je pro grafiky a Flex pro programátory.
Programátory asi totiž moc nezajímá, jak se obrázky a zvuky z Flexu exportují. Není totiž žádná možnost jak nastavit kvalitu a kompresi přidávaného obrázku či zvuku, používají se základní hodnoty – které navíc ani nejsou nikde popsané, řekl bych, že se obrázky komprimují na 70% JPEG.
Flex je naštěstí docela soudný a tak dokáže rozpoznat, kdy je vhodné obrázek komprimovat bezztrátově PNGem a kdy ho prohnat JPEG kompresí. Kdekdo by ale asi docela ocenil, kdyby to bylo možné někde vyladit. Není. U obrázků se to dá přežít, u zvuků je to ale horší. MP3jku, do které se váš zvuk zkomprimuje, nijak neovlivníte. To mi přijde jako opravdu největší amatérismus.
Naštěstí je zde metoda, jak toto vše nastavit – potřebujete na to Flash. Zkrátka si připravíte SWF se všemi potřebnými třídami s obrázky a zvuky a použijete interní komprimaci Flashe, která se – bohudík – dá nastavit odjakživa.
Ale je tu problém: průhledné obrázky. Ve Flashi jsme si všichni zvykli používat průhledné obrázky komprimované JPEGem, aniž bychom přemýšleli, jak to vlastně s tou kompersí je. Popravdě – to je jasná věc – průhledný JPEG neexistuje. Jak to tedy Macromedia vyšpekulovala?
Pokud do Flashe nacpete průhledný PNG a necháte ho při exportu komprimovat jako JPEG, Flash ho rozloží na dva obrázky: barevný 24bitový a 8bitovou alphu ve škále šedi. Oba zkomprimuje jako JPEG a Flash Player to pak při přehrávání zkombinuje a pustí na obrazovku.
Jenže tohle přesně neumí Flex. Při embedování nepochopí, co to ty dva obrázky vedle sebe v SWF jsou a hodí chybu, ze které se moc nedozvíte. Dnes mi zabralo půl dne, než jsem na to přišel.
Jsou dvě: nepoužívat JPEG pro kompresi průhledných obrázků (a tedy komprimovat do PNGu, který umí 8bitovou alphu odjakživa) anebo počkat, co s tím Adobe udělá. Napíšu jim bug report.