Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/07/2008, 03:17
Avatar de ferquetzal
ferquetzal
 
Fecha de Ingreso: julio-2008
Mensajes: 26
Antigüedad: 15 años, 9 meses
Puntos: 0
Problema Script php grafica pastel

Hola, tengo un problema con un script de php para graficar. Cuando en la cadena que se le pasa por el URl hay uno o mas ceros, el srcipt solo dibuja un "pastel" entero. he intentado recorrer el array y eliminar los ceros y reindexar pero no consigo que me salga. Le paso los valores asi:

echo "<img src='graphpastel.php?dat=$dat&bkg=FFFFFF&wdt=250&h gt=100'>";

donde $dat = implode (',', $el_array);

¿Como puedo hacer para eliminar los ceros que puedan llegar?¿ y hacer transparente el color blanco para que solo aparezca el pastel? Gracias de antemano.


<?
Header( "Content-type: image/png");
//Header( "Content-type: image/jpeg");
require("grab_globals.lib.php");

if($bkg == "") $bkg="FFFFFF";
if($wdt == "") $wdt=200;
if($hgt == "") $hgt=100;

$por = array();
$dato = array();

foreach ($dato as $valor) {
$total += $dato[$i];
$nvars++;
}

$dato = split(",", str_replace(" ","",$dat));
foreach ($dato as $valor) {
if($valor == null)
unset($array[$valor]);

}
$dat = array_values($dato);
/* crea imagen */
$image = imagecreate($wdt +1,$hgt+21);

// librerias de Colores y Funciones
include('libcolores.php');
include('libfunciones.php');

sscanf($bkg, "%2x%2x%2x", $rr, $gg, $bb);
$colorbkg = ImageColorAllocate($image,$rr,$gg,$bb);

// crea bkg blanco
ImageFilledRectangle($image,0,0,$wdt +1,$hgt+21,$colorbkg);

$nvars = 0;
foreach ($dato as $valor) {
$total += $dato[$i];
$nvars++;
}

for ($i = 0;$i < $nvars;$i++)
$total += $dato[$i];

for ($i = 0;$i < $nvars;$i++)
$por[$i] = ($dato[$i] * 360) / $total;

$inicio = 0;
$final = 0;

for ($j = ($hgt/2)+15;$j > $hgt/2;$j--) {
for ($i = 0, $c = 6;$i < $nvars;$i++,$c+=3) {
$final += $por[$i];
imagefilledarc ($image, $wdt/2, $j, $wdt, $hgt, $inicio, $final, $colores[$c], IMG_ARC_PIE);
$inicio = $final;
}
}

$inicio = 0;
$final = 0;

for ($i = 0, $c = 5;$i < $nvars;$i++, $c+=3) {
$final += $por[$i];
imagefilledarc ($image, $wdt/2, $hgt/2, $wdt, $hgt, $inicio, $final, $colores[$c], IMG_ARC_PIE);
$inicio = $final;
}

/* Realiza la generacion del grafico */

ImagePNG($image);
//ImageJPEG($image,'',100);

/* Vacia la memoria */
ImageDestroy($image);
?>