Obtažení textu v GD
9 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
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)