Crear gráfica de barras He improvisado una gráfica de barras, puede que no sea la mejor forma, pero es lo que he conseguido de manera nativa con PHP, me gustaría usar una función, así cuando le pase unos valores, se genere una gráfica personalizada Código PHP: $im = imagecreate(100,100); imagecolorallocate($im,222,222,222); $blanco = imagecolorallocate($im, 233, 14, 91); imagefilledrectangle($im,1,91,8,98,$blanco); imagefilledrectangle($im,11,81,18,98,$blanco); imagefilledrectangle($im,21,71,28,98,$blanco); imagefilledrectangle($im,31,61,38,98,$blanco); imagefilledrectangle($im,41,51,48,98,$blanco); imagefilledrectangle($im,51,41,58,98,$blanco); imagefilledrectangle($im,61,31,68,98,$blanco); imagefilledrectangle($im,71,21,78,98,$blanco); imagefilledrectangle($im,81,11,88,98,$blanco); imagefilledrectangle($im,91,1,98,98,$blanco); // Guardar la imagen imagepng($im); $png = ob_get_clean(); $uri = "data:image/png;base64," . base64_encode($png); imagedestroy($im);
He puesto el código anterior dentro de una función, pero no funciona Código PHP: function GenerarIMG(/* En cuanto se pinte esta IMG recojo los 2 arrays y cambio las barras estáticas por un foreach */){ $im = imagecreate(100,100); /* $HEIGHT y $width */ imagecolorallocate($im,222,222,222); $blanco = imagecolorallocate($im, 233, 14, 91); imagefilledrectangle($im,1,91,8,98,$blanco); imagefilledrectangle($im,11,81,18,98,$blanco); imagefilledrectangle($im,21,71,28,98,$blanco); imagefilledrectangle($im,31,61,38,98,$blanco); imagefilledrectangle($im,41,51,48,98,$blanco); imagefilledrectangle($im,51,41,58,98,$blanco); imagefilledrectangle($im,61,31,68,98,$blanco); imagefilledrectangle($im,71,21,78,98,$blanco); imagefilledrectangle($im,81,11,88,98,$blanco); imagefilledrectangle($im,91,1,98,98,$blanco); imagepng($im); $png = ob_get_clean(); $uri = "data:image/png;base64," . base64_encode($png); imagedestroy($im); }
Código PHP: GenerarIMG([height,width],widthBAR,[4,3,7,2,8,6])
Código PHP: GenerarIMG([height,width],widthBAR,[6,3,7,3])
Última edición por quico5; 26/12/2018 a las 19:43 |