Ahora falta que indiques el código que usas (la explicación ya la tenemos de como funciona) .. así chequearemos todo lo que mencionas.
De todas formas .. no sé como generas tu código .. si dices "por pantalla" .. "asumo" que envias cabeceras HTTP (header(...)) y que generas tus imagenes "al vuelo" (no como archivos). (Te fijas las "suposiciones" que hay que estar haciendo, con el código todo esto se vé en el momento).
En ese caso . .tu tienes que tener un script que genera tu imagen con tu header() por médio .. Cuando digo "script" me refiero a un .php en forma aislada (aunque uses una función .. eso es lo de menos, a la función habrá que llamarla en ese script).
genera_imagen.php
Código PHP:
<?php
// tu función .. ya sea así o llamada en un include()
function genera_imagen(){
// balblabla
header(....)
etc ...
}
// llamas a tu función ...
genera_imagen($_GET['imagen']);
?>
En -otros- escripts/páginas HTML llamas a tu generación de la imagen bajo un tag de imagen HTML:
Código PHP:
<img src="genera_imagen.php?imagen=<? echo $referencia ?>">
Un saludo,