[Php-avanzado] Problema con texto generado con GD
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Dom Nov 4 22:37:22 ART 2012
Qué te dice el log de errores del servidor?
El dom, 04-11-2012 a las 22:16 -0300, Juan Manuel P. escribió:
> Buenas, queria saber si alguien puede llegar a ayudarme a entender el
> porque el codigo que voy a adjuntar no me genera las letras dentro de
> la imagen.
> Lo pruebo en mi localhost y funciona perfectamente, lo subo a un
> hosting y las letras no aparecen. Reviso la configuracion con phpinfo
> de mi localhost y del hosting y son casi identicas (tambien las
> adjunto).
>
> Desde ya muchas Gracias.
>
> Archivo php para generar un Captcha
>
> <?php
> session_start();
> function CreateLines($img,$w,$h,$c,$y)
> {
> //Creo el Largo de la Linea
> $Largo=rand(50,130);
> //Creo la Posicion inicial X
> do
> {
> $PosXi=rand(0,50);
> }while(($PosXi+$Largo)>150);
> //Creo la Posicion inicial Y
> $PosYi=rand($y,$y+14);
> //Creo la Posicion Final Y
> do
> {
> $PosYf=rand(1,49);
> }while($PosYi!==$PosYf);
> //Creo el ancho de la linea
> imagesetthickness($img, 1);
> //Creo las lineas en la imagen
> imageline($img, $PosXi, $PosYi, $PosXi+$Largo, $PosYf, $c);
> }
>
> function GenerateCaptcha($letra)
> {
> $width=150;
> $height=50;
> $Fondo=imagecreate($width, $height);
> $Color = imagecolorallocate($Fondo,255,50,0);
> $colorFondo=imagecolorallocate($Fondo, 40, 170, 0);
> $ColorLinea = imagecolorallocate($Fondo,255,50,0);
> imagefill($Fondo, 0, 0, $colorFondo);
> $CantLines=0;
> $PosY=3;
> do
> {
> CreateLines($Fondo,$width,$height,$ColorLinea,$PosY);
> $CantLines++;
> $PosY=$PosY+15;
> }while($CantLines<3);
> // Reemplace la ruta por la de su propia fuente
> $fuente = "Font/DACTYLOG.TTF";
> // Añadir el texto
> $CantLet=0;
> $LetInit=5;
> do
> {
> $angulo=rand(0,10);
>
> imagefttext($Fondo, rand(20,25), $angulo, rand($LetInit,
> $LetInit+10), rand(25,45), $Color, $fuente, substr($letra,
> $CantLet,1));
> //imagettftext($Fondo, rand(20,25), $angulo,
> rand($LetInit,$LetInit+10), rand(25,45), $Color, $fuente,
> substr($letra, $CantLet,1));
> $CantLet++;
> $LetInit=$LetInit+27;
> }while($CantLet < strlen($letra));
> // Imprimir la imagen al navegador
> header("Content-type: image/png");
> imagepng($Fondo);
> }
> //En el php que lo llama a este se genera un string de 5 caracteres
> al azar entre letras y numeros que se guarda en $_SESSION["captcha"] ,
> probe haciendo un print_r($_SESSION) y la cadena se genera
> perfectamente.
> GenerateCaptcha($_SESSION["captcha"]);
> ?>
>
> La direccion de la fuente con el archivo existe, probe con la fuente
> arial y con esta otra que hace referencia $fuente
>
>
> Phpinfo de libreria GD en localhost:
>
> gd
> GD Support
> enabled
> GD Version
> 2.0
> FreeType Support
> enabled
> FreeType Linkage
> with freetype
> FreeType Version
> 2.4.4
> T1Lib Support
> enabled
> GIF Read Support
> enabled
> GIF Create Support
> enabled
> JPEG Support
> enabled
> libJPEG Version
> 6b
> PNG Support
> enabled
> libPNG Version
> 1.2.46
> WBMP Support
> enabled
>
>
> Phpinfo de libreria GD en el hosting:
>
> gd
> GD Support
> enabled
> GD Version
> bundled (2.0.34 compatible)
> FreeType Support
> enabled
> FreeType Linkage
> with freetype
> FreeType Version
> 2.4.2
> GIF Read Support
> enabled
> GIF Create Support
> enabled
> JPEG Support
> enabled
> libJPEG Version
> 6b
> PNG Support
> enabled
> libPNG Version
> 1.2.44
> WBMP Support
> enabled
> XBM Support
> enabled
>
>
> Como pueden ver incluso la version de gd es superior en el hosting, y
> de acuerdo a php.net que recomienda tener una gd superior a la version
> 2.0.28
>
> Alguien puede ver o se le ocurre en que puede estar fallando o si
> necesitan alguna otra informacion para ayudarme solo me dicen y la
> subo.
>
> Muchas Gracias.
>
> In his heart, in his eyes
> In his soul, there’s no sign of thunder
> Screams, can you hear the screaming
> When another restless soul must die
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado