esto es el header para mandar una imagen al navegador no para mandar una imagen a un html que por su parte ya ha llegado al navegador con su header.
Lo mejor que podrias hacer es guardar el nombre de la imagen en un campo de texto de la base de datos (loqusea.ext) y el fichero de la imagen en un directorio del servidor.
Esto es lo que se ha recomendado repetidas veces en este foro.
Luego no tendras problemas para mostrarla en un html
Código PHP:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<?php
$sql= "SELECT Imagen FROM Usuarios";
?>
<img scr="ruta/<?php echo $row['Imagen'];?>">
</body>
</html>
Donde
ruta es la dirección relativa entre el fichero php y el directorio donde tienes las imagenes y
$row['Imagen']="loquesea.ext" es decir el nombre del fichero con su extensión....
Eso eliminará ese campo BLOB y redundará en mas eficiencia de la base de datos.
En cuanto a cambiar el nombre del fichero tambien lo podrias hacer.... busca uno de los muchos scripts que se han posteado de como subir ficheros todos, como el tuyo, usan $_FILES, leen el fichero temporal que se ha creado y lo copian a un directorio permanente con un nuevo nombre en ese momento es cuestion de concatenar al nombre que le quieras dar la extensión. Mas que el nombre del usuario yo le pondria el id del usuario. NO INSERTES EL ARCHIVO EN LA BBDD