No puedes hacer lo que pretendes en el mismo script.
Debes separar los procesos que tengan salida hacia el cliente (navegador) de diferentes tipos.
Es decir .. por un lado generaras un gráfico y lo envias al cliente indicando en cabeceras HTTP que tipo de dato es el que envias .. (content-type) .. pero también pretendes enviar un "texto plano" a al vez ..
Para eso, .. crea tu script que genera la imagen sin ningún echo "algo" .. ni HTML .. ni espacios o saltos de línea antes de <? o despues de ?> ...llamalo con un nombre: genera_imagen.php .. a continucación llamalo desde -otro- script PHP o página HTML con un tag de imagen:
genera_grafico.php Código PHP:
<?php
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
}
else {
echo 'An error occured.';
}
?>
prueba.php Código PHP:
<html>
<head>
</head>
<body>
antes
<img src="genera_imagen.php">
despues
</body>
</html>
Los errores que puedas querer mostrar de la ejecución de ese script que genera el gráfico deberías de generalos antes de generar (según el flujo del código .. no en "posición absoluta" de esa función) tu "header()" y sólo los veras si ejecutas por -separado- (llamandolo por el URL directo) ese script (no desde un tag de imagen ..src: .. ahí sólo veras una enorme "X" ... en tu navegador)
Un saludo,