Cuando estás en fase de desarrollo . .no puedes usar un @ delante de una función o código en general .. sino, no veras los mensajes de error que se puedan estar produciendo y que serán los que te "digan" que es lo que sucede para darle una solución al problema.
Empieza quitando dichos @ y observar que sucede (esperando mensaje de error alguno).
Por lo demás .. la llamada a ese código podría ser directamente en el URL:
http://www.nose.cl/ese_script_genera_imagen.php
o en otra página .html por un tag de imagen .. PERO! del script que genera la imagen .. no de la "imagen" que tomas como "fuente?":
<img src="ese_script_genera_imagen.php">
Te hago el comentario por qué tu no estás sobre-escribiendo tu "foto.png" por el "thumbnail" de esta que ese código usando GD (
www.php.net/gd) genera .. sino que la generas "al vuelo" .. para eso usas las cabceras HTTP que ahí tienes (vía header())
Por otro lado .. tienes que tener cierta concordancia con tu imagen "fuente" y lo que generas (cabeceras HTTP+funcion para generar imagen al buffer de salida o a un archivo)
Es decir .. si tu tienes una imagen .png origen .. la función para "abrirlar" será:
$fuente = imagecreatefrompng($ruta);
Y si luego generas un .png .. deja como tienes actualemnte tus header() y la otra función image....(), Si quieres generar un JPG (que podrías hacerlo) tendrás que cambiar las cabeceras HTTP (por el formato MIME adecuado) y la función mencionada a imageJPG()
Un saludo,