[Php-avanzado] Problema con texto generado con GD
Juan Manuel P.
tucu_21 en hotmail.com
Dom Nov 4 22:16:01 ART 2012
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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20121104/1085d3f1/attachment.html>
Más información sobre la lista de distribución Php-avanzado