Foros del Web » Programando para Internet » PHP »

Generar gráficos utilizando la librería GD

Estas en el tema de Generar gráficos utilizando la librería GD en el foro de PHP en Foros del Web. Hola a todos , mi problema es que deseo crear graficas dinamicamente utilizando PHP (version 4.3.10), ya he leido bastante sobre el tema y vi ...
  #1 (permalink)  
Antiguo 27/07/2006, 00:14
 
Fecha de Ingreso: junio-2006
Mensajes: 4
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Generar gráficos utilizando la librería GD

Hola a todos , mi problema es que deseo crear graficas dinamicamente utilizando PHP (version 4.3.10), ya he leido bastante sobre el tema y vi que se realiza gracias a la libreria GD , la cual hay que habilitarla en el PHP.INI

extension=php_gd2.dll

Ya realizado esto hice un llamado a la fucion gdinfo y me dio este resultado:

array(11) { ["GD Version"]=> string(27) "bundled (2.0.28 compatible)" ["FreeType Support"]=> bool(true) ["FreeType Linkage"]=> string(13) "with freetype" ["T1Lib Support"]=> bool(false) ["GIF Read Support"]=> bool(true) ["GIF Create Support"]=> bool(true) ["JPG Support"]=> bool(true) ["PNG Support"]=> bool(true) ["WBMP Support"]=> bool(true) ["XBM Support"]=> bool(true) ["JIS-mapped Japanese Font Support"]=> bool(false) }

segun lo que habia leido todo estaba configurado para poder crear imagenes, empece a trabajar con las funciones de la libreria pero por mas de que trato no logro obtener imagenes solo recibo una cantidad de signos incoherentes. Incluso intentando el ejemplo mas facil que consegui no logro nada:

<head>
<meta http-equiv="Content-Type" content="image/gif;" />
<title>Untitled Document</title>
</head>

<body>
<?
$im = imagecreatefromgif("rock.gif");

imagegif($im);
// Liberamos la memoria que ocupaba la imagen
imagedestroy($im);
?>

</body>
</html>


Aunque no deseo utilizar una imagen de fondo sino crear la imagen dimamicamente desde 0 , intente utilizar esta funcion :


$im_w = 420; // Ancho de la imagen
$im_h = 200; // Alto de la imagen
$im_margen = 50; // Margen lateral
$origen = $im_h-35; // Origen de las barras


$imagen = imagecreate($im_w,$im_h);


y obtengo los mismos resultados , probe diferentes navegadores (firefox , explorer) y recibi los mismos resultados, por favor si alguien me puede dar una mano seria de mucha ayuda ya que es un trabajo sumamente importante para mi y ya ando , de ante mano agradezco el tiempo dispensado , cualquier comentario sera de gran ayuda.
  #2 (permalink)  
Antiguo 27/07/2006, 01:34
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
Sonrisa hechale un ojo a esto

http://www.programacion.net/php/tutorial/phpsol_gd/4/

saludos

a ver si te sirve
__________________
gerardo
  #3 (permalink)  
Antiguo 27/07/2006, 07:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No puedes hacer esto:
Código PHP:
<head>
<meta http-equiv="Content-Type" content="image/gif;" />
<title>Untitled Document</title>
</head>

<body>
<?
$im 
imagecreatefromgif("rock.gif");

imagegif($im);
// Liberamos la memoria que ocupaba la imagen
imagedestroy($im);
?>

</body>
</html>
Es decir .. no puedes "mezclar" HTML con la generación de la imagen y presentación directa en HTML así .. de esa forma.

Las páginas HTML bajo el protocolo HTTP no pueden mostrar datos "binarios" (tu imagen) y "texto plano" mezclado. Para eso el lenguaje HTML implementa su código para tal fin (tag) .. concretamente el de un tag HTML de imagen:

<img src="imagen.tal">

Bien .. ahora vía PHP y librerías GD tu vas a generar esa imagen .. así que debes usar tu código + "enviar" las cabeceras HTTP correspondientes para "indicar" que el tipo de datos que estás generando con PHP no es un "texto/plano o HTML" (como por defecto así PHP si no le indicas nada lo genera) sino que es una imagen y de tal formato MIME.

genera_imagen.php
Código PHP:
<?
// Generas tu imagen o la procesas con GD

// Enviamos cabecera al navegador para avisar q va una imagen en tal formato MIME (JPEG, PNG .. o lo que sea .. OJO con los GIF! .. no toda versión de GD soporta GIF ... haz tus pruebas con jpg o png y una vez que veas como funciona .. prueba GIF) 

header("Content-type: image/jpeg"); 
// Le ponemos el nombre de la imagen .. Por si vemos sus propiedades o la quermos guardar ...
header("Content-Disposition: inline; filename=imagen.jpeg".); 

// aquí llamas a la función que entrega el proceso de generación de la imagen GD al buffer de salida .. funciones como imagegif() .. o la que corresponda imagexxxx()
Y .. por lo dicho anteriormente .. esto debe quedar en un script -a parte- y llamarlo en un tag de imagen donde lo quieras usar:

Código PHP:
<img src="genera_imagen.php"

Como veras el problema que tienes o el "mal entendido" al usar las funciones de GD es por desconocimiento de como realmente funciona un navegador, el "HTML" en sí y algo del protocolo HTTP (espero que ahora lo tengas claro .. cuanto más "entiendas" como funciona el entorno en el que desarrollas .. mejor te irá para comprender alguntas técnicas como esta de generar imagenes dinámicamente).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 27/07/2006, 10:54
 
Fecha de Ingreso: junio-2006
Mensajes: 4
Antigüedad: 11 años, 5 meses
Puntos: 0
Gracias

Gracias de verdad ya pude solucionar el problema, gracias a Chalchis por el tutorial , esta bastante interesante y gracias tambien a Cluster por la explicacion, fueron de mucha ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:35.