Tu imagen (la que subes por HTTP vía tu formulario HTML) la dejas en:
fotos/".$nombre_archivo
(así dice tu 2º parámetro de move_uploaded_file() .. ) así que será desde ahí la ruta de tu imagen en el servidor la que deberás tomar para aplicar tu función que crea el thumbnail y que ahora sólo le dices "$nombre_archivo" .. que como veras no está ahí la imagen sino en fotos/
Pero, .. veo también que entre todos los cambios que has hecho (deberías limpiar el código antes de poner algo en el foro .. así nos lias) .. por aquí haces:
$camino=dirname($nombre_archivo)."fotos/";
eso no es correcto .. en tal caso al reves y el dirname() sobra o en su defecto deberías usar basename() para quedarte con el nombre de archivo sólo descartando la ruta :
Código PHP:
$camino="fotos/".$nombre_archivo;
Como ya te dije .. puedes pasarle el nombre con ruta completo a tu función .. por qué esta originalmente ya hace sus "basename()".
Un saludo,