Hola:
Me parece que el error es el siguiente.
Debes de sustituir donde dice:
Código:
$NombreFichero = "$var1-$var2-$var3.png";
open (IMAGEN, ">$NombreFichero") || &error('Error...');
binmode(IMAGEN);
print IMAGEN $im;
close (IMAGEN);
Por lo siguiente:
Código:
$NombreFichero = "$var1-$var2-$var3.png";
open (IMAGEN, ">$NombreFichero") || &error("Error: $!");
binmode(IMAGEN);
print IMAGEN $im->png;
close (IMAGEN);
Lo habías hecho bien cuando lo imprimes en el navegador, se me hacer que se te olvidó hacerlo de nuevo. Lo que pasa es que al incluir el
$im->png le indicas al módulo
GD que quieres tu imagen de tipo PNG.
SALUDOS