Te complicas en vano. El tema de la posición del texto debes de tenerlo aparte y no estar repitiendo tantas líneas de código. Tranquilamente puedes unificar ambos formulario, pues al formulario de datos solamente haría falta añadirle un 
<input type = "file"> y una caja de texto para añadir el texto a la imagen. Finalmente, guardas la imagen en la carpeta del servidor, los datos de la persona y el nombre de la imagen generada.  
inicio.html   
Código HTML:
Ver original- <form action = "fin.php" method = "post" enctype = "multipart/form-data"> 
-     Nombre:  <input type = "text" name = "nombre" />
-     Apellidos:  <input type = "text" name = "apellidos" />
-     Imagen:  <input type = "file" name = "imagen" />
-     Texto:  <input type = "text" name = "texto" />
-   
-     <input type = "submit" name = "enviar" /> 
Código PHP:
Ver original- include "conexion.php"; 
- header("Content-type: image/png"); 
-   
- $cadena = $_POST["texto"]; 
- $imagen = "imagen-" . mt_rand(1000, 10000) . ".jpg"; 
-   
-   
- mysql_query(sprintf("INSERT INTO tabla (nombre, apellidos, imagen) VALUES ('%s', '%s', '%s')", $nombre, $apellidos, $imagen)); 
No incluyo el campo del Id porque asumo que es autoincremental, pero si no fuera así, añádelo. 
Saludos