Crear imagen a partir de una tabla html en PHP

RaymaN

Hola, estoy haciendo algunas cosas en PHP y en concreto necesito crear una imagen a partir de una tabla en HTML. Es decir, tengo una tabla de 400px por 40px y necesito que me salga dibujada como una imagen, lista para darle a "guardar como" en el navegador.

He estado mirando algunos tutoriales de GD pero no me entero de nada, soy bastante novato en esto de PHP xD. Alguien sabría como hacerlo fácilmente?

Saludos!

NeB1

lo que dices es un poco raro... yo haría una imagen de esa tabla y la meteria en un <img>.

pero si lo que quieres es que esa tabla se actualice con valores dependiendo de X (o sea, que no es la misma siempre y no vale tenerla como imagen) no se me ocurre como, en php no conozco ninguna clase ni nada que convierta html en imagen...

Sé de un programa que se puede invocar con ordenes de consola en php que convierte un string html en PDF

<?
    exec("ordenenconsola ".$stringHTMLdeLaTabla);
?>

quizás a partir de ahí puedas hacer alguna chapuza, del rollo que cuando se carga la página, se le envie a ese programa el string html correspondiente a la tabla, que el programa guarde el archivo PDF. y que la propia tabla este dentro de

<a href="direcciondelarchivo.PDF"><table width="400" height="40>...</table></a>

El programa CREO que se llamaba html2pdf....

grivcon

#1 no se si necesitas eso por especificacion de tu programa o porque te ha dado la vena de hacerlo así; si es esto segundo, haz una imagen con aspecto de tabla (con cierto orden filas/columnas en su contenido y ya está), si es lo primero ni zorring:S

PiradoIV

#1 Te toca aprender a usar GD, simplemente tienes que seguir el manual. Es una biblioteca bastante fácil y potentorra:

http://es.php.net/gd

¡Saludos!

RaymaN

Indagando un poco más en GD he conseguido meterle texto a una imagen (también me vale), e introducirle encima otra imagen. Lo que no he conseguido hacer son las dos cosas a la vez, es decir, meter una imagen en otra y además ponerle texto. El código que tengo ahora es:

<?
header("Content-Type: image/jpg");

//Declaramos la fuente, color y texto
$fuente = "arial.ttf"; 
$negro = imagecolorallocate($imagen,0,0,0); 
$texto = "hola"; 

// Creamos las dos imágenes a utilizar
$imagen1 = imagecreatefromjpeg("./m1.jpg");
$imagen2 = imagecreatefromjpeg("./m2.jpg");

// Copiamos una de las imágenes sobre la otra
imagecopy($imagen1,$imagen2,200,0,0,0,200,150);

//Metemos el texto
imagettftext($imagen1,51,0,0,53,$gris,$fuente,$texto); 

// Damos salida a la imagen final
imagejpeg($imagen1);

// Destruimos ambas imágenes
imagedestroy($imagen2);
imagedestroy($imagen1);

?>

Lo que me muestra es el texto http://localhost/test/img.php como si fuese una imagen.

Edit: ya lo he conseguido hacer, tenía que declarar la imagen antes que el color xD

NeB1

enorme!!! no sabía que existía esto!! (por cierto, poner un link a localhost es pa hacerle screenshot :P)

RaymaN

#6 no pretendía que vierais el link, si no que me muestra el link en sí, en modo texto como si fuera una imagen xD

Ya lo he conseguido hacer, era para esto:

Mediante variables en la url aparece el texto y las imágenes :P

Fr4nk0

Por curiosidad, el código que pusiste arriba es con el que has hecho esa imagen? Yo es que he usado poco la librería GD, pero bueno, viendo cosas que hace la gente siempre se aprende :)

RaymaN

#8 no exactamente, ahí no estaba terminado. El código final es este:

<?
header("Content-Type: image/png");

$f1 = imagecreatefrompng('./flags/'.$_GET['f1'].'.png');
$f2 = imagecreatefrompng('./flags/'.$_GET['f2'].'.png');
$s1 = $_GET['s1'];
$s2 = $_GET['s2'];
$t1 = $_GET['t1'];
$t2 = $_GET['t2'];
$bg = imagecreatefrompng('./m'.$_GET['bg'].'.png');


$fuente = "Futura-Condensed-Bold_Regular.ttf"; 
$fuente1 = "impact.ttf"; 
$gris = imagecolorallocate($bg,102,102,102); 
$gris1 = imagecolorallocate($bg,51,51,51); 

imagecopy($bg,$f1,75,13,0,0,20,15);
imagecopy($bg,$f2,305,13,0,0,20,15);
imagettftext($bg,16,0,100,29,$gris,$fuente,$t1);
$x = imagettfbbox(16,0,$fuente,$t2); 
$w = $x[0] - $x[2];
imagettftext($bg,16,0,$w+298,29,$gris,$fuente,$t2);
imagettftext($bg,24,0,6,33,$gris1,$fuente1,$s1);
imagettftext($bg,24,0,360,33,$gris1,$fuente1,$s2);

imagepng($bg);

imagedestroy($bg);
imagedestroy($f1);
imagedestroy($f2);

?>
RedHat

tratandose de ti rayman no podria ser otra cosa que para agilizarte el esfuerzo diario del tema press electronico ;) gran trabajo.

Usuarios habituales

  • RedHat
  • RaymaN
  • Fr4nk0
  • NeB1
  • PiradoIV
  • grivcon