• Lunes 23 de Diciembre de 2024, 08:18

Autor Tema:  Extraer Imágenes Bmp Desde Mysql  (Leído 3551 veces)

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Extraer Imágenes Bmp Desde Mysql
« en: Martes 7 de Agosto de 2007, 00:26 »
0
Hola, a la hora de extraer las imágenes de la base de datos de MySQL hago lo siguiente, por ejemplo:
Código: Text
  1.  
  2. $result = mysql_query("SELECT fotografia FROM persona WHERE dni = 111111");
  3. $result_array = mysql_fetch_array($result);
  4. header("Content-Type: image/bmp");
  5. echo $result_array[0];
  6.  
  7.  

El caso es que me muestra caracteres raros:

#+f�%2j�->o�-Aq�g�f�e�c...

y no sé por qué es. La imagen esta guardada como a partir de un bmp desde una aplicación que funciona paralelamente y se ve bien desde el programa. Entonces, que puede ser?

Gracias!

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #1 en: Martes 7 de Agosto de 2007, 00:38 »
0
Justo antes de los caracteres raros aparece tambien:

Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\hhh.php:7) in C:\AppServ\www\hhh.php on line 41

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #2 en: Martes 7 de Agosto de 2007, 15:58 »
0
Mh... las veces que tuve que usar una imagen lo hacia de otra forma.
La imagen la subia a una carpeta del servidor, y en la base de datos, guardaba la direccion de la imagen. Algo asi como "img/imagen_dni_3214564.jpg";
Luego simplemente hacia un query que me devolvia la direccion y hacia:
echo("<img src=$img_db_src>");

Lo que ocure es que eran imagenes de articulos, no de personas que tal vez tengan que estar cifradas.

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #3 en: Miércoles 8 de Agosto de 2007, 11:16 »
0
Hola, lo que pasa es que guardo desde una aplicación la imagen en la base de datos, y lueo, para recuperarla, accedo directamente al servidor, que creo que es más facil a estas alturas para mi. Entonces, como puedo hacer, si he guardado en un campo BLOB la imagen, como BMP, recuperarla para mostrarla en el navegador?

Gracias!

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #4 en: Miércoles 8 de Agosto de 2007, 16:58 »
0
No soy bueno en esto, pero te propongo esta solucion:
*)El texto del BLOB, guardalo en un archivo temporal llamado por ejemplo "tmp12345.bmp" o gif, jpg u otra
*)Luego usa la tecnica que te propuse, haz un echo("<img src='tmp12345.bmp'>");

PD> si no estoy mal, el campo BLOB debe ser de tipo BINARIO de lo contrario guardaria mal la imagen.
Recuerda generar un nombre de imagen agregandole por ejemplo la hora, porque si hay varios usuarios tratando de ver la pagina, habria problema. Podrias agragarle los digitos del DNI despues del tmp: "tmp324567897.gif"

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #5 en: Viernes 10 de Agosto de 2007, 20:00 »
0
El problema es que soy muy nuevo en PHP y no logro todavía pillarlo mucho. Alguien podría ayudarme en este tema? Lo necesito con urgencia y he estado buscando información en la web acerca de las imágenes como campo BLOB en mySQL y hay, en general, poca cosa ( por lo menos que yo haya visto ).

Gracias!

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #6 en: Viernes 10 de Agosto de 2007, 20:22 »
0
Este es el codigo:

[CODE]
<html>
<head>
   <title>Ejemplo de PHP</title>
</head>
<body>
<?php

   if (!($link=mysql_connect("localhost","root","root")))
   {
      echo "Error conectando a la base de datos.";
      exit();
   }
   if (!mysql_select_db("mibd",$link))
   {
      echo "Error seleccionando la base de datos.";
      exit();
   }


$result = mysql_query("SELECT * FROM persona WHERE dni = 111111", $link);

echo "Nombre:    ".mysql_result($result, 0, "nombre")."<br>";

echo "Dirección:    ".mysql_result($result, 0, "domicilio")."<br>";

Header( "Content-type: image/bmp");
echo "Fotografia:    ".mysql_result($result, 0, "fotografia")."<br>";

mysql_close($link); //cierra la conexion
?>
</body>
</html>
[CODE]

Y aparece en el navegador esto:

Nombre: Pepe
Dirección: Calle Molinos 5

Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\hhh.php:6) in C:\AppServ\www\hhh.php on line 26
Fotografia: BM����6���(���y���

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #7 en: Viernes 10 de Agosto de 2007, 23:30 »
0
¿Que tal Ithilien?
El error
Citar
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\hhh.php:7) in C:\AppServ\www\hhh.php on line 41
Se produce porque no podés modificar las cabeceras (Header) una vez que ya mandaste algo al navegador, por eso los caracteres raros en la pantalla, no podés abrir las etiquetas <html>, <body> y demás, ni siquiera puede haber un espacio en blanco antes de las etiquetas "<?php" para poder usar esta directiva. Por lo tanto, te paso un ejemplo que debería servirte, no se si sea la forma correcta de hacerlo pero funciona...

index.php
Código: Text
  1. &#60;html&#62;
  2.   &#60;head&#62;
  3.     &#60;title&#62;Ejemplo de PHP&#60;/title&#62;
  4.   &#60;/head&#62;
  5.   &#60;body&#62;
  6.   &#60;?php    
  7.     &#036;id=2;
  8.     if (!(&#036;link=mysql_connect(&#34;localhost&#34;,&#34;root&#34;,&#34;&#34;))){
  9.       echo &#34;Error conectando a la base de datos.&#34;;
  10.       exit();
  11.     }
  12.     if (!mysql_select_db(&#34;test&#34;,&#036;link)){
  13.       echo &#34;Error seleccionando la base de datos.&#34;;
  14.       exit();
  15.     }
  16.  
  17.     &#036;result = mysql_query(&#34;SELECT * FROM persona WHERE id = &#036;id&#34;, &#036;link);
  18.  
  19.     echo &#34;Nombre: &#34;.mysql_result(&#036;result, 0, &#34;nombre&#34;).&#34;&#60;br&#62;&#34;;
  20.  
  21.     echo &#34;Dirección: &#34;.mysql_result(&#036;result, 0, &#34;direccion&#34;).&#34;&#60;br&#62;&#34;;
  22.    
  23.     echo &#34;Fotografia:&#60;br/&#62;&#34;;
  24.     echo &#34;&#60;img src='imagen.php?id=&#036;id'/&#62;&#34;;
  25.  
  26.     mysql_close(&#036;link); //cierra la conexion
  27.   ?&#62;
  28.   &#60;/body&#62;
  29. &#60;/html&#62;
  30.  

imagen.php
Código: Text
  1. &#60;?php
  2.   &#036;id=&#036;_GET[&#34;id&#34;];
  3.   if (!(&#036;link=mysql_connect(&#34;localhost&#34;,&#34;root&#34;,&#34;&#34;))){
  4.     echo &#34;Error conectando a la base de datos.&#34;;
  5.     exit();
  6.   }
  7.   if (!mysql_select_db(&#34;test&#34;,&#036;link)){
  8.     echo &#34;Error seleccionando la base de datos.&#34;;
  9.     exit();
  10.   }
  11.  
  12.   &#036;result = mysql_query(&#34;SELECT imagen FROM persona WHERE id = &#036;id&#34;, &#036;link);
  13.  
  14.   Header( &#34;Content-type: image/bmp&#34;);
  15.   echo mysql_result(&#036;result, 0, &#34;imagen&#34;);
  16.  
  17.   mysql_close(&#036;link); //cierra la conexion
  18. ?&#62;
  19.  

PD: Los campos que estoy utilizando no son los mismos que los de tu DB.

Un saludo  :hola:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #8 en: Viernes 10 de Agosto de 2007, 23:35 »
0
Porfa Ithilien, borra todos esos caracteres raros que el hilo se hace muy difícil de leer...

 :comp:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #9 en: Sábado 11 de Agosto de 2007, 00:34 »
0
Bendito seas Ángel!! Funciona a la perfección.

Lo primero es que ya he quitado los caracteres raros. Lo segundo, algo de eso leí, pero no acabo de entender donde estaba el problema. Quiero entender que indico lo de modificar el HEADER despues de mostrar el nombre y la dirección.

Bueno, el caso es que ya funciona a la perfección. Estaba bastante preocupado y quería agradecértelo mucho porque me has solucionado un quebradero de cabeza que llevaba ya con él varios días.

GRACIAS DE NUEVO!

P.D.: Estoy acabando mi Proyecto Fin de Carrera y esta parte la acabo de empezar y como no es mucho, era lo que más problemas podría darme así que por eso estoy tan contento. Saludos!

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #10 en: Sábado 11 de Agosto de 2007, 07:02 »
0
Me alegra haberte ayudado Ithilien  :)
En cuanto a tu duda, te comento que en tu código existían dos errores básicos:

El primero es que estabas tratando de enviar una cabecera (mediante Header(...)) de manera incorrecta ya que con anterioridad estabas enviado etiquetas HTML y cadenas de caracteres (mediante echo's) cosa que no se puede hacer. Para mas info ver acá.

El segundo es que si de todas formas pudieras haber mandado esa cabecera estarías especificando que el contenido de dicha página es una imagen ("Content-type: image/bmp") y en realidad el contenido de tu página vendría a ser una mezcla de etiquetas HTML, cadenas y una imagen. Un clericó  :rolleyes: .Fijate en que en el ejemplo que te pasé en la página "imagen.php" especifico la cabecera y el único contenido que envío es la imágen. De esta manera puede referenciarse como si la página fuese una imagen en el atributo src de una etiqueta <img>.-

Espero haberme explicado.

Un saludo y suerte con eso :beer:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Ithilien

  • Miembro MUY activo
  • ***
  • Mensajes: 116
    • Ver Perfil
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #11 en: Sábado 11 de Agosto de 2007, 10:07 »
0
Ahora lo entiendo a la perfección. Muchísimas gracias de nuevo  :rolleyes:

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Extraer Imágenes Bmp Desde Mysql
« Respuesta #12 en: Domingo 12 de Agosto de 2007, 05:56 »
0
Cita de: "Ithilien"
Ahora lo entiendo a la perfección. Muchísimas gracias de nuevo  :rolleyes:
Por nada compa :beer:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.