Pres to vkladane BMP. BMPcka uz alfa kanal zvladaji, takze je to mozne vyuzit. Jak se zmixuje alfa kanal s AND-bitmapou vsak netusim, muselo by se to vyzkouset.
Dobrý den,
mám pocit, že u 32bit ikon se AND bitmapa ignoruje (ona by stejně měla být prázdná).
BTW: Ve Windows Vista umožnili do ICO souborů vkládat PNG soubory :-D To aby ikony ve velikosti 256x256x32bit nezabíraly 250KB...
Ukázkové soubory s PNG a v porovnání s původním 32bit alphakanálem: http://www.iconempire.com/info/vista-icons.htm
Spíš Microsoft podezřívám z lenosti než z utajování. Na stejný problém (nemožnost najít "dokumentaci") jsme narazili, když byla na webu objevena ikona s neprázdnou AND bitmapou v místech, kde byl použit Alpha kanál. Jestli so dobře vybavuji, tak Windows tyto ikony zobrazí bez ohledu na AND bitmapu.
Odpověď na druhý dotaz: Ikony ve Vistách jsou stále bitmapy - jenže obřích rozměrů 256x256 pixelů (tato velikost je kvůli omezení BYTE v ICO formátu uložena jako 0 krát 0) - v takovém rozlišení se Vám v 1280x1024 vejdou jen 4 vedle sebe v 1600x1200 je to ikon 6. Protože nikdo nebude používat tak obrovské ikony, jsou dobrým zdrojem pro zmenšování.
Problem je, ze ten PNG by se mel posilat v zavislosti na vlastnostech klientskeho zarizeni. Napriklad pro nektere mobily nema smysl posilat PNG v truecolor o velikosti 32x32 pixelu, ale staci mensi obrazek s mene poctem barev.
Prave v tom ma ICO vyhodu - v jednom souboru o velikosti radove kB se prenese vice obrazku. Pokud by se melo prenaset vice PNG ke klientu, bude to objemnejsi a pomalejsi - kazde PNG znamena novy HTTP dotaz (ten ma sam tak 200 bytu).
Jeste je dobre dat pozor na to, aby PNG nemely 256 barev, to uz je lespi pouzit truecolor PNG - samotna paleta ma 768 bytu, to je mnohdy vic, zpakovaby pocet pixelu.
Možná to bude souviset s mým problémem. Na http://php.vrana.cz/favicon.ico mám ikonu (vygenerovanou tuším pomocí IrfanView): width=16, height=16, bitcount=24, length=872.
Bližším prozkoumáním jsem zjistil, že chybějících 32 bytů je umístěno v AND-bitmapě - každý nový řádek začíná na bytu dělitelném čtyřmi. Pokud bychom toto pravidlo vztáhli na JavaCup.ico, tak součet rázem taky vychází, takže předpokládám, že to bude ono.
Škoda, že o tom v článku není žádná zmínka, v odkazovaných dokumentech jsem našel také pouze zavádějící informace (jako že velikost AND-bitmapy = šířka*výška/8).
Moje opomenutí: sice jsem v článku na jednom místě psal, že se jedná o vložené windowsovské bitmapy (uložené v kontejneru s koncovkou .BMP), ale už jsem nedal odkaz na předchozí části tohoto seriálu. Formát .ICO je vlastně taky kontejner na bitmapy
Máte naprostou pravdu - všechny řádky v jakékoli win. bitmapě (v tomto případě pojmenovaných AND a XOR) jsou zarovnány na celistvé čtyři byty. U XOR-bitmap se na to vlastně skoro nikdy "nepřijde", protože je jejich velikost mocninou dvou a i u šestnáctibarevných bitmap je výsledek dělitelný čtyřmi, ale u AND-bitmap tento problém může nastat.
jenom dotaz: je mozne ze jsem to spatne pochopil, ale z tohohle clanku mi prijde ze barvy jsou ukladany v poradi cervena, modra a pote zelena… ale v popisu struktury RGBQuad je to obracene… jak to tedy je?