Ahoj, pokoušim se nějak vPHP obtáhnout text jinou barvou a nějak se mi to stále nedaří - chci docílit v PHP stejnýho efektu, jako třeba v Photoshopu s funkcí Stroke. Zatim jsem zkusil napsat do obrázku text několikrát - jenom jsem posunoval X a Y a přes to hodil text v jiný barvě, ale vypadá to nechutně - posuďte sami:
takhle to vypadá v Photoshopu: http://i39.tinypic.com/69izq0.gif
a takhle z PHP: http://i44.tinypic.com/oqhsh2.gif
nějak moc nechápu, proč i při použití stejnejch fontů je to v PHP takový ostrý... A chtěl bych se zeptat, jestli někdo netuší, jak docílit stejnýho/podobnýho efektu, jako v Photoshopu za pomoci PHP a knihovny GD...
Předem díky,
MyFlower
Photoshop používá antialiasing - vyhlazování písma. Je to profesionální grafický editor. Nemůžeš totéž očekávat od nějaké doplňkové knihovny PHP.
Nejjistější bude, když opustíš myšlenku obtahování textu nebo si to celé uděláš ve Photoshopu.
<HTML>Existuje trik - obtažení bude týž nápis v barvě toho obtažení.
Vykreslíš nejprve obtažení - tentýž text v barvě obtažení minimálně čtyřikrát - jednou o [1,1] mimo, pak o [1, -1] mimo, potom o [-1,-1] mimo a nakonec o [-1,1] mimo.
A úplně na závěr vykreslíš ten text v barvě textu. Voilá, máš obtažený text.
EDIT ^: aha, nečetl jsem tvůj příspěvek celý.
Pokud chceš přesnější efekt (obtažení má být tlustší), musíš text v barvě obtažení vykreslit vícekrát v různých posunech (ale se stejnou délkou posunu) v různých směrech...
Dá se to zobecnit - každý posun vypadá pro každé n od 0 do N = počtu posunů (kromě) takto:
[d * cos(2π/N * n); d * sin(2π/N * n)]
Kde d je tloušťka obtažení. Volba N bude záviset na d - čím vyšší N, tím lepší efekt při vyšším d.
Např. pro 8 směrů a tloušťku 2 bude posun pro každý směr vypadat takto:
[2 * cos(2π/8 * n); 2 * sin(2π/8 * n)]</HTML>
Nípal: Mám takové nejasné tušení, že přesně tak svůj postup MyFlower popsal a že se mu výsledek nelíbí.
<HTML>Kit - sorry, všimnuto, upravil jsem a doplnil jsem svůj příspěvek - omlouvám se.</HTML>
MyFlower: Teď mě napadá: Zkus ten text vygenerovat až na klientovi, viz http://wellstyled.com/files/css-nopreload-rollovers/example.html - samozřejmě s obtažením.
Kit: nějak nechápu využití - tohle mam na menu, ale jak by mi to pomohlo s mym problémem mi zůstává záhadou :-D
Nípal: tohle je na mě nějaký moc chytrý, zejtra si to přečtu znova a snad to pochopim, ale díky moc =D
=MyFlower=
Vyhlazeni pisma by teoreticky melo byt mozno resit stejne, jako antialiasing funguje - svoje pozadovane pistmo udelas do fiktivniho obrazku napr o 8* vetsich rozmerech (stejne tak pridelas i obtazeni - napr podle postupu od Nipala) a pote obrazek s pouziti imagecopyresampled() vlozis do puvodniho.
Vysledek sice ani tak nebude srovnatelny s vysledke, ktery ti da Photoshop nebo GIMP, ale o moc víc z PHP už asi nedostaneš :)
v gimpu delam rozmazavani podobne, jak popsal Freeze. Delam to vsak za jinym ucelem nez antialiasing.
- vemu podklad
- prekryji ho textem
- pouziji rozmazavani, gausovo, treba
- pak tam opet vlozim text na stejne misto
- pouziji vyber+1 , coz dela obtazeni
- zkopiruji a vlozim na puvodni pozadi (spis jenom zkopiruji do noveho, nastavim okoli pruhledna a dam ulozit jako GIF, pak na webku to zkombinuji s pozadim; vyhoda je, ze pak se da zmenit pozadi a nekdy netreba menit rozmazavani, pripadne staci zmenit kolorovani-saturaci)