Gracias por la ayuda kayetano, me ha ido muy bien el código que me aconsejaste, y ya tendré cuidado con el GET, que no había caido en eso.
He cambiado el código completamente, y ha quedado algo tal que así:
Código PHP:
<?php
Header("Content-type: image/png");
include "connect.php";
$im = imagecreatefrompng("images/image.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$query = mysql_query("SELECT * FROM table WHERE id=1");
if( $row = mysql_fetch_array($query)) {
$txt = $row['nombre'];
} else {
$txt = "ERROR";
}
$px = (imagesx($im) - 7.5 * strlen($txt)) / 2;
imagestring($im, 3, $px, 9, $txt, $orange);
imagepng($im);
imagedestroy($im);
?>
Y ahora por lo menos me ha cambiado de error si sale una página llena de carácteres especiales...
Hice una prueba para ver que salía por pantalla al hacer el SELECT, y es una cadena de texto limpia... ¿Puede ser que incluir connect.php pete el script?
Ya no se que más hacer... gracias por la ayuda!
_edito: Pues resulta que si, cambiando el código por:
Código PHP:
<?php
header("Content-type: image/png");
$username = "user";
$password = "pass";
$database = "db";
mysql_connect('dir',$username,$password)or die(mysql_error());
@mysql_select_db($database)or die('Failed to select database.');
$im = imagecreatefrompng("images/image.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$query = mysql_query("SELECT * FROM tabla WHERE id = 1");
if( $row = mysql_fetch_array($query)) {
$txt = $row['nombre'];
} else {
$txt = "ERROR";
}
$px = (imagesx($im) - 7.5 * strlen($txt)) / 2;
imagestring($im, 3, $px, 9, $txt, $orange);
imagepng($im);
imagedestroy($im);
?>
No hay fallos y la imagen se ve correctamente.
Muchas gracias a todos!!