Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/07/2009, 14:58
prome
 
Fecha de Ingreso: abril-2008
Mensajes: 8
Antigüedad: 16 años, 1 mes
Puntos: 0
guardar graficas de google

Hola a todos,

tengo una aplicación PHP la cual genera un informe final mostrando unas graficas de gogle (google chart api). Para mostrar en la web las gráficas no tengo ningun problema.

El problema viene cuando necesito guardar esa grafica generada en el servidor como un archivo físico, es decir, con extendion jpg, o gif o png...

Todo viene porque esas graficas generadas no son imagenes reales, sino scripts, mirar como queda el código de una de estas graficas de google:

h t t p : / / chart.apis.google.com/chart?cht=p3&chd=t:90,49&chs=350x150&chl=Foo|Bar

Es decir, en el img src del codigo fuente queda así:

<img src="h t t p : / / chart.apis.google.com/chart?cht=p3&chd=t:90,49&chs=350x150&chl=Foo|Bar">

Como veis, no es una imagen real, física, no tiene extensión.

Entonces el problema es que si quiero pasarlo a PDF con FPDF por ejemplo, no puedo ya que no me reconoce el formato, al no tener extension.

Por eso pensé que lo mejor sería poder guardar esa gráfica en el server de alguna forma.

Estoy utilizando el siguiente código, que si bien funciona con una imagen real de origen, no funciona para este tipo de imágenes "virtuales".

Os lo dejo aqui a ver si teneis alguna sugerencia. Quizá con u upload? pero como debería hacerlo?

Gracias de antemano por vuestra ayuda y espero vuestras respuestas:

Saludos!!!

CÓDIGO PHP:
---------------------------------------------

<?php
// config --

//CON LA IMAGEN DE LA LINEA DE ABAJO NO FUNCIONA
$src = array ("h t t p : / / chart.apis.google.com/chart?cht=p3&chd=t:90,49&chs=350x150&chl=Foo|Bar") ;

//CON LA IMAGEN DE LA LINEA DE ABAJO SI QUE FUNCIONA
//$src = array ("google.com/images/logo_sm.gif");


$under = 0; // combine images underneath or not?
// -- end of config

$imgBuf = array ();
$maxW=0; $maxH=0;
foreach ($src as $link)
{
switch(substr ($link,strrpos ($link,".")+1))
{
case 'png':
$iTmp = imagecreatefrompng($link);
break;
case 'gif':
$iTmp = imagecreatefromgif($link);
break;
case 'jpeg':
case 'jpg':
$iTmp = imagecreatefromjpeg($link);
break;
}

if ($under)
{
$maxW=(imagesx($iTmp)>$maxW)?imagesx($iTmp):$maxW;
$maxH+=imagesy($iTmp);
}
else
{
$maxW+=imagesx($iTmp);
$maxH=(imagesy($iTmp)>$maxH)?imagesy($iTmp):$maxH;
}

array_push ($imgBuf,$iTmp);
}

$iOut = imagecreate ($maxW,$maxH) ;

$pos=0;
foreach ($imgBuf as $img)
{
if ($under)
imagecopy ($iOut,$img,0,$pos,0,0,imagesx($img),imagesy($img) );
else
imagecopy ($iOut,$img,$pos,0,0,0,imagesx($img),imagesy($img) );
$pos+= $under ? imagesy($img) : imagesx($img);
imagedestroy ($img);
}

imagegif($iOut, "imagen1.gif", 90);


?>
------------------------------------------------
FIN CODIGO PHP.
-------------------------------------------------