Autor Zpráva
Tom96
Profil *
Zdravím, chtěl bych ve své práci použít nějaké funkce pro vytváření obrázků v php, ale i když použiji ukázkový kód z php manuálu,

<?php
header ('Content-type: image/png');
$im = @imagecreatetruecolor(120, 20)
      or die('Cannot Initialize new GD image stream');
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);
imagepng($im);
imagedestroy($im);
?>


háže mi to chybu: Obrázek "http://localhost/test.php" nelze zobrazit, protože obsahuje chyby.

Podle phpinfo() je gd povolená a funkce gd_info mi vypsala toto:
Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Create Support] => 1 [JPG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XPM Support] => [XBM Support] => 1 [JIS-mapped Japanese Font Support] => )

Zkoušel jsem i podle těchto rad vykomentovat hlavičku a povolit výpis chyb, ale žádné mi to nezobrazuje. Nevíte kde může být chyba?
keeehi
Profil
Tom96:
Obrázek "http://localhost/test.php" nelze zobrazit, protože obsahuje chyby.
tobě to doopravdy háže takovouto česky psanou chybu, nebo jsi to přeložil a napsal sem, co jsi přeložil ty?

Chybu v kódu jsem neobjevil, takže jediné co mě napadá je, že máš před <?php něco napsané (stačí i jedina jediná mezera) a protože se pak snažíš odesílat hlavičku, tak ti to nefunguje.
Tom96
Profil *
abych to upřesnil, tak tu chybu přesně takhle příše Firefox. (IE zobrazí obdlélník s červeným křížem)
a před <?php nic nemám
Alphard
Profil
Jak ten obrázek otvíráte?
Otevřete ho přímo v prohlížeči (v adresním řádku bude http://localhost/test.php) a zakomentujte tu hlavičku.
Jak již psal keeehi, před <?php nesmí být vůbec nic. Tím narážím na tzv. BOM, jaké kódování používáte?
Případně můžete zkusit něco jednoduššího:
<?php
header ('Content-type: image/png');
$im = imagecreatetruecolor(200, 150);
imagepng($im);
?>
peta
Profil
* @ - tohle smazat
* //header('Content-type: image/png'); - tohle zakomentovat
* pridat uplne na zacatek
@ini_set('error_reporting', E_ALL);
@ini_set("display_errors", "on");
error_reporting(E_ALL);

na cz.php.net/imagepng je priklad:
<?php
$im = imagecreatefrompng("test.png");
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
Takze ciste teoreticky je priklad oki.

http://cz.php.net/imagestring
<?php
$im = imagecreate(100, 30);
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);
imagestring($im, 5, 0, 0, 'Hello world!', $textcolor);
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
Coz je uplne to same.

Si myslim, ze ti to zkapalo na nejake chybe a text 'obrazek nenacten' nejsou obrazkova data. Mezi kazdy prikaz bych dal echo cislo (1,2,3,4) a tam uvidis, co se provede a co ne, ikdyz to nenapise chybu., pripadne se da vysledek funkce vychechovat.
$b = imagestring($im, 5, 0, 0, 'Hello world!', $textcolor);
echo $b*1;
Tom96
Profil *
tak chyba je nejspíš v tom BOM jak píšete. Předtím jsem to zkoušel v uft-8, ale když změním kódování na iso8859-2 nebo windows1250 tak to již funguje. Jestli tomu dobře rozumím, tak pokud budu chtít používat utf-8, tak budu muset sehnat editor, který to dokáže bez toho BOM ukládat...
Alphard
Profil
Tom96:
Jestli tomu dobře rozumím, tak pokud budu chtít používat utf-8, tak budu muset sehnat editor, který to dokáže bez toho BOM ukládat
Ano, ale neměl by to být problém, snad všechny dobré editory pro programátory (samozřejmě i IDE) to umožňují alespoň vypnout v nastavení.
Tom96
Profil *
děkuji moc za vaši pomoc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: