Foros del Web » Programando para Internet » PHP »

Dibujo de lineas con php

Estas en el tema de Dibujo de lineas con php en el foro de PHP en Foros del Web. Hola, para dibujar una linea existe el siguiente codigo: <?php $im = @imagecreate(100, 100) or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); ...
  #1 (permalink)  
Antiguo 27/02/2009, 15:09
(Desactivado)
 
Fecha de Ingreso: enero-2009
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 0
Dibujo de lineas con php

Hola, para dibujar una linea existe el siguiente codigo:

<?php
$im = @imagecreate(100, 100)
or die("Error creando la imagen");
$fondo = imagecolorallocate($im, 255, 255, 255); // blanco
$linea = imagecolorallocate($im, 0, 0, 0); // negro

// Dibujamos la línea
imageline($im, 10, 10, 90, 90, $linea);

header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>

Bien, yo adapte ese codigo a unas necesidas propias para lo q estoy haciendo
de esta forma:

<?php
$x1=$_GET['x1'];
$y1=$_GET['y1'];
$x2=$_GET['x2'];
$y2=$_GET['y2'];
$radios4=unserialize (urldecode ($_GET ['radi4']));
$col1=0;
$col2=0;
$col3=0;
$im = imagecreate(256,6000) or die("Error creando la imagen");
$fondo = imagecolorallocate($im, 255, 255, 255); // blanco
$linea = imagecolorallocate($im, 255, 120, 30); // negro


/*Dibujando las lineas de Radio-Radio que vienen de los nodos 2do tramo*/

if ($radios4!=0 and $radios4!="")
{
foreach($radios4 as $a => $va1)
{
$y11=80*$a;
$y1=10+$y11;
foreach($va1 as $i => $va2)
{
$resu1=pow($x2,2);
$resu2=pow($a,2);
$resu3=$resu1+$resu2;
$resu4=Sqrt($resu3);
$resu5=round($resu4);

imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
}
}
}

header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);

?>

Ahora en el codigo anterior se me dibujan una serie de lineas correctamente como yo le he adaptado a mis necesidades. Mi pregunta es ¿puedo hacer una conexion a base de datos antes de dibujar la linea para de acuerdo a esa consulta darle un color especifico a la linea?? Yo he intentado cambiando el codigo anterior de esta forma:

<?php
include('../conexion.php');
$x1=$_GET['x1'];
$y1=$_GET['y1'];
$x2=$_GET['x2'];
$y2=$_GET['y2'];
$radios4=unserialize (urldecode ($_GET ['radi4']));
$col1=0;
$col2=0;
$col3=0;
//$conecta=new conexiones();
$im = imagecreate(256,6000) or die("Error creando la imagen");
$fondo = imagecolorallocate($im, 255, 255, 255); // blanco
$linea = imagecolorallocate($im, 255, 120, 30); // negro

/*conexion a la base de datos del servidor principal*/

$host="localhost"; /*servidor*/
$usuario="root"; /*usuario*/
$contraseña="12345"; /*contraseña*/
$nombre_db="bdintra_v1"; /*base de datos*/

$conecta=new conexiones(); /*clase para conexion a la base de datos*/
$conectar=$conecta->conectar($host,$usuario,$contraseña,$nombre_db) ;

/*Dibujando las lineas de Radio-Radio que vienen de los nodos 2do tramo*/

if ($radios4!=0 and $radios4!="")
{
foreach($radios4 as $a => $va1)
{
$y11=80*$a;
$y1=10+$y11;
foreach($va1 as $i => $va2)
{
$resu1=pow($x2,2);
$resu2=pow($a,2);
$resu3=$resu1+$resu2;
$resu4=Sqrt($resu3);
$resu5=round($resu4);

/*Verifico el estatus del enlace antes de pintar la linea para establecer el color del enlace*/

$cadena="SELECT * FROM tx_radios_instalados WHERE corresponsal='$va1' and radiobase='$va2'";
$consulta=$conecta->seleccion($cadena);
$resultado=mysql_fetch_array($consulta);
$status=$resultado['statusenlace'];
if($status=="Planificado")
{
//parametros para pintar la linea de color naranja=>StatusEnlace=>Planificado
$col1=255;
$col2=120;
$col3=30;
}
else if($status=="Operativo")
{
//parametros para pintar la linea de color verde=>StatusEnlace=>Operativo
$col1=0;
$col2=200;
$col3=0;
}
else if($status=="Desincorporado")
{
//parametros para pintar la linea de color negro=>StatusEnlace=>Desincorporado
$col1=0;
$col2=0;
$col3=0;
}
$linea = imagecolorallocate($im, col1, col2, col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
}
}
$cerrar=mysql_close($conectar);
}

header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);

?>
Al ejecutar este codigo no se me dibujan las lineas, quiero saber si es posible hacer conexion a base de datos dentro de un archivo php q basicamente es una imagen?? Les agradezco sus ayudas por favor!!
  #2 (permalink)  
Antiguo 27/02/2009, 15:39
Avatar de atoBeto  
Fecha de Ingreso: abril-2008
Ubicación: B.C.S., México
Mensajes: 35
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Dibujo de lineas con php

Claro que es posible.

Seguramente ocurre que se manda un mensaje de advertencia (Warning) o uno de error a la salida para el navegador, al acceder a la base de datos o al ejecutar una consulta, y entonces al llegar a la ejecución de:

Código PHP:
header("Content-type: image/gif");
imagegif($im);
imagedestroy($im); 
a PHP no le es posible crear ya la imagen, debido a que antes de declarar el encabezado (o cabecera) de la imagen, ya hay texto escrito, es decir el mensaje de advertencia o error que manda al acceder a tu base de datos.

Prueba comentando esta misma parte :

Código PHP:

/*header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);*/ 
para que así en el navegador puedas ver cual es el error que está ocurriendo al acceder a tu base de datos que genera ese mensaje.

Saludos.

Última edición por atoBeto; 27/02/2009 a las 15:45 Razón: agregar saludo
  #3 (permalink)  
Antiguo 27/02/2009, 16:38
(Desactivado)
 
Fecha de Ingreso: enero-2009
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Dibujo de lineas con php

ah ok ya comente esa parte, pero me sigue sin dibujar las lineas, sale una x tipica de una imagen q no se encuentra, debes saber cual es, estoy seguro q el error esta en la consulta, el valor q me traigo de esa consulta es de tipo String, no si esta bien utilizar $resultado=mysql_fetch_array($consulta);
en vez de
$resultado=mysql_fetch_assoc($consulta);
no se si eso tiene q ver?? q otra sugerencia??
  #4 (permalink)  
Antiguo 27/02/2009, 16:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Dibujo de lineas con php

Un poco de validacion no te vendria mal:

Código php:
Ver original
  1. $resultado=mysql_fetch_array($consulta) or die(mysql_error());
  2. if(mysql_num_rows($resultado) < 1)
  3.     die('No se encontro el registro buscado.');

Pruebalo directamente en el navegador hasta que veas que funciona, solo entonces lo pruebas en tu pagina.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 02/03/2009, 12:17
Avatar de atoBeto  
Fecha de Ingreso: abril-2008
Ubicación: B.C.S., México
Mensajes: 35
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Dibujo de lineas con php

Cita:
Iniciado por lerry Ver Mensaje
ah ok ya comente esa parte, pero me sigue sin dibujar las lineas, sale una x tipica de una imagen q no se encuentra, debes saber cual es, estoy seguro q el error esta en la consulta, el valor q me traigo de esa consulta es de tipo String, no si esta bien utilizar $resultado=mysql_fetch_array($consulta);
en vez de
$resultado=mysql_fetch_assoc($consulta);
no se si eso tiene q ver?? q otra sugerencia??
Pero debes dejar de probarlo como una imagen, prueba el archivo PHP de este código como si de una página web se tratara, es decir desde el navegador, para que así puedas saber exactamente cual es el error de acceso a la base de datos que arroja. Ya detectado el error se corrige y entonces sí, regresas el código que crea la imagen.

Saludos.
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 21:44.