přestalo mi fungovat imagettftext

4 příspěvky

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Vytvářím kontrolní obrázek pro guestbook pomocí GD funkce imagettftext tady http://rosalynda.wz.cz/php/ukazka/rand_code/ . Nejdřív mi fungoval, ale pak po nahrání jiných fontů se nechce zobrazit. Dala jsem zpět původní fonty, ale nepomohlo to. Z času na čas se obrázek částečně ukáže, teda má pozadí, ale text se nevypíše. Občas se vypíše chybové hlášení, že nelze nalézt ttf soubory. Je zapotřebí nastavit CHMOD u ttf spouborů nebo něco? Mimochodem, vytvoření jednoduššího obrázku funkcí ImageString nadále funguje. Díky za případné rady. Zde je mů zdroj: if ($test == 1) { $im = imagecreate((10 + $pocet_znaku*50), (72 + $pocet_znaku*30)); } else { $im = imagecreate((10 + $pocet_znaku*50), 96); } $barva_bkg = imagecolorallocate($im, 240, 240, 240); $barva_font = imagecolorallocate($im, 40, 40, 40); $barva_grey = imagecolorallocate($im, 200, 200, 200); $barva_blue = imagecolorallocate($im, 0, 0, 255); $barva_red = imagecolorallocate($im, 255, 0, 0); imagefill($im, 0, 0, $barva_bkg); if($pozadi == 1) { $num1arcs = ($pocet_znaku + 3) ; for ($i=1; $i<=$num1arcs; $i++) { imagearc($im, -15+$i*30+rand(-20,20), 40+rand(-20,20), 96+rand(-20,20), 96+rand(-20,20), 0, 360, $barva_red); } $num2arcs = ($pocet_znaku + 3); for ($i=1; $i<=$num2arcs; $i++) { imagearc($im, -15+$i*30+rand(-20,20), 40+rand(-20,20), 96+rand(-20,20), 96+rand(-20,20), 0, 360, $barva_blue); } } $ttfdirectory = dirname($_SERVER["PATH_TRANSLATED"]) . "/ttf/" ; $TTFCHOICES=array(); if (is_dir($ttfdirectory)) { if($dir_handle = opendir($ttfdirectory)){ while($file = readdir($dir_handle)){ if($file !== "." && $file !== ".." && kontrola_extenze($file,"ttf")){ $TTFCHOICES[] = $file; } } } closedir($dir_handle); } else { exit ("<p>Chyba... nelze nalézt ttf adresáø... "); } $pocet_fontu = count($TTFCHOICES); if ($pocet_fontu < 1) exit ("<p>Chyba... nebyl nalezen font."); if ($pocet_fontu < $pocet_znaku) exit ("<p>Chyba... poèet znakù nesmí pøekroèit poèet fontù."); $fontsource = array(); $fontangle = array(); srand ((float) microtime() * 10000000); $rand_keys = array_rand ($TTFCHOICES, $pocet_znaku); for ($i = 0; $i < $pocet_znaku; $i++) { $fontsource[] = $ttfdirectory . $TTFCHOICES[$rand_keys[$i]]; $fontangle[] = rand(-30,30); } for ($i = 0; $i < $pocet_znaku; $i++) { imagettftext($im, 46, $fontangle[$i], 15+50*$i, 56+rand(-10,+10), $barva_font, $fontsource[$i], $kkod_session[$i]); if ($test == 1) { imagestring($im, 10, 5, 100+20*$i, $kkod_session[$i] . " " . $TTFCHOICES[$rand_keys[$i]], $barva_font); } }
  2. nečetl jsem tvůj zdroj, ale zde: http://jaj.wz.cz/blog/jak-na-zabezpeceni-formularu-pred-roboty je můj jednoduchoučký postup na to, co zřejmě potřebuješ a normálně mi to tu funguje (viz odkaz dole v článku na hotový skript)
  3. Myslím, že problém je v tom, že špatně generuješ pole $fontsource. V některých prvcích není korektní odkaz na soubor s existujícím fontem. Skript potom nemůže font najít a havaruje. Nechej si to pole vypsat před imagettftext příkazem print_r($fontsource) Důvodem bude, že readdir vrací také . a .. z adresáře a ty je bereš jako názvy fontů. Tyto položky musíš vyeliminovat. Jinak souhlasím z Džej Árem, že je to dělo na vrabce.
  4. Děkuji mockrát za rady a kritiku :) Myslím, že problém byl v nevhodných fontech a taky asi v ukládání souborů ttf v ASCII módu.

← Zpět na všechna témata