Foros del Web » Programando para Internet » PHP »

problemas para visualizar imagenes jpeg. (imagenes binarias en BD Access por ODBC)

Estas en el tema de problemas para visualizar imagenes jpeg. (imagenes binarias en BD Access por ODBC) en el foro de PHP en Foros del Web. saludos miembros del foro, espero que me puedan ayudar con un problema que tengo desde hace 25 dias y no doy con la solucion, es ...
  #1 (permalink)  
Antiguo 24/04/2005, 13:47
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 19 años
Puntos: 0
problemas para visualizar imagenes jpeg.

saludos miembros del foro, espero que me puedan ayudar con un problema que tengo desde hace 25 dias y no doy con la solucion, es con respecto a visualizar una imagen, el codigo que estoy utilizando es uno que copie en un manual y que por cierto ese mismo ejem. lo he visto en otros manuales, es el siguiente:

<HTML>
<HEAD>
<TITLE>destino.php</TITLE>
</HEAD>
<BODY>
<?
// En la cabecera HTTP indicamos que lo que devolvemos es una imagen
// de tipo jpeg. Para ello utilizamos el tipo MIME: image/jpeg
Header("content-type: image/jpeg");
// Creamos la imagen a partir de un fichero existente
$im = @imagecreatefromjpeg("http://vgm/100.jpeg");
// Mostramos la imagen

Imagejpeg($im);


// Liberamos la memoria que ocupaba la imagen
ImageDestroy($im);
?>
</BODY>
</HTML>


y me sale, la foto pero en codigo ASCII, puros codigos , no se por que ya he revisado el ejem. y tal y como esta, como que si encuentra el archivo, si lo trae, pero a la mera hora de visualizarlo, sale puro codigo ASCII, no se por que, en los manuales no me dice por que, ya tengo instalada la GDlibrary y esta ENABLE (asi sale en phpinfo();), pero como que me hace falta crear algun tipo de repositorio para que caiga ahi la imagen o no se, a lo mejor le tengo que dar algun tipo de salida con alguna instruccion,por favor ayudenme

en la instruccion imagejpeg($im) ya le puse la instruccion echo y nada, se la cambie por print, tampoco

echo imagejpeg($im);
print imagejpeg($im);

ninguna de las dos sale, puro codigo ascii, por favor, que alguien se apiade de mi y me diga que estoy haciendo mal, o que instruccion debo utilizar o a la mejor tengo que activar algo en el php.ini.

gracias de antemano por la ayuda

Última edición por Cluster; 25/04/2005 a las 07:51
  #2 (permalink)  
Antiguo 24/04/2005, 18:09
Avatar de hunab  
Fecha de Ingreso: febrero-2005
Ubicación: Barcelona
Mensajes: 133
Antigüedad: 19 años, 2 meses
Puntos: 1
weno mas de lo mismo, esta cuestion esta contestada en muxos sitios, el codigo es correcto, te falla por la cabecera, te pongo directamente lo que dice php.net
Cita:
Recuerde que la función header() debe ser llamada antes de que cualquier salida sea enviada, ya sea mediante etiquetas HTML normales, líneas en blanco de un archivo, o desde PHP. Es un error bastante común interpretar código extra con include(), require(), o alguna otra función de acceso de archivos, y terminar con espacios o líneas en blanco que son impresas antes de un llamado a header(). El mismo problema existe cuando se usa un archivo PHP/HTML único.
__________________
Marcio Barrios
marciobarrios.com // artículos sobre estándares y desarrollo web
  #3 (permalink)  
Antiguo 24/04/2005, 23:30
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
lo que te quiere decir es que lo hagas asi:
Código PHP:
<?
// En la cabecera HTTP indicamos que lo que devolvemos es una imagen
// de tipo jpeg. Para ello utilizamos el tipo MIME: image/jpeg
Header("content-type: image/jpeg");


// Creamos la imagen a partir de un fichero existente
$im = @imagecreatefromjpeg("http://vgm/100.jpeg");
// Mostramos la imagen
echo "<HTML><HEAD><TITLE>destino.php</TITLE></HEAD><BODY>";
Imagejpeg($im);


// Liberamos la memoria que ocupaba la imagen
ImageDestroy($im); 
?>
</BODY>
</HTML>
un saluldo
__________________
SEO en Medellin
  #4 (permalink)  
Antiguo 24/04/2005, 23:32
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
por cierto, no esta bien hecho que sollicites ayuda a un usuario en especifico, esto hace que los demas no se interesen por tus temas
__________________
SEO en Medellin
  #5 (permalink)  
Antiguo 25/04/2005, 07:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por mafima
por cierto, no esta bien hecho que sollicites ayuda a un usuario en especifico, esto hace que los demas no se interesen por tus temas
Ya solventé el detalle .. edité su mensaje .. cualquiera puede colaborar con una respuesta. No es necesario dirigir la pregunta en un foro "público" a una persona concreta (para eso está el sistema de mensajería privada).

Un saludo,
  #6 (permalink)  
Antiguo 25/04/2005, 07:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
vgm77

No puedes tener ese HTML ahí . .junto con el código que genera tu imagen y que envias cabeceras HTTP al cliente (navegador).

Debes tener ese código "puro" sin HTML ningúno .. y llamarlo desde tu otra página tipo:

codigo_genera_imagen.php
Código PHP:
<?
// En la cabecera HTTP indicamos que lo que devolvemos es una imagen
// de tipo jpeg. Para ello utilizamos el tipo MIME: image/jpeg
Header("content-type: image/jpeg");
// Creamos la imagen a partir de un fichero existente
$im = @imagecreatefromjpeg("http://vgm/100.jpeg");
// Mostramos la imagen

Imagejpeg($im);


// Liberamos la memoria que ocupaba la imagen
ImageDestroy($im); 
?>
Asegurate que no tengas espacios, saltos de línea antes de <? o despues de tus ?>

Código PHP:
<html>
<
head>
</
head>
<
body>
bablabla
<img src="codigo_genera_imagen.php">
</
body>
</
html
Un saludo,
  #7 (permalink)  
Antiguo 25/04/2005, 11:27
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 19 años
Puntos: 0
Mil Disculpas A Todos Los Miembros De Este Foro

PIDO DISCULPAS POR ESTE FALLO DE PROTOCOLO, O DE POLITICA DEL FORO O DE ETIQUETA CYBERNAUTA, NO FUE MI INTENCION, LO QUE PASA ES QUE CLUSTER ANTERIORMENTE ME CONTESTO OTRAS COSAS Y LE DIJE QUE LO IBA A CHECAR Y QUE LUEGO LE POSTEABA, ES POR ESO QUE LO DIRIGI A EL, DE TODAS FORMAS ESTOY MUY AGRADECIDO A LOS QUE SE TOMARON LA MOLESTIA DE ACLARARME MI PROBLEMA (TAN SIMPLE PARA USTEDES QUE SON EXPERIMENTADOS), PARA LA PROXIMA DEJARE ABIERTO MI TEMA PARA QUE CUALQUIERA ME PUEDA AYUDAR, DESPUES DE TODO PARA ESO SON LOS FOROS, TIENES RAZON MAFIMA DISCULPAME, ESPERO PODER SEGUIR CONTANDO CON TU AYUDA EN ESTE FORO, Y TAMBIEN A TI CLUSTER UNA DISCULPA Y TAMBIEN A HUNAB, SE QUE HAY MUCHA INFORMACION EN MANUALES DE LA PAGINA PHP PERO LOS HACEN MUY TECNICOS PARA LOS QUE YA SABEN Y NO PARA PRINCIPIANTES. GRACIAS A TODOS
  #8 (permalink)  
Antiguo 25/04/2005, 11:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No hace falta que te disculpes .. tan sólo seguir la recomendación para la próxima. Aquí no hay "expertos" .. cualquier persona en una situación similar te puede contar su experiencia. Lo que pasa que algunos aquí tal vez han tocado más temas ..

El manual de PHP (el oficial) es de "referencia" .. por eso lo ves "técnico" y así debe ser .. Es lo que "manda" .. luego como aquí hay gente que lo "explica" en palabras llanas . .o bien se crean "tutoriales" o FAQ's que no es más que lo mismo explicado con ejemplo práctico y sin tanto "técnicismo" que al fin y al cabo es lo que se necesita comprender para saber por ejemplo "por qué a mi me funciona y a ti no" .. o por qué se comporta así y en otros casos no hace lo mismo ..

A todo esto no nos comentastes como te fué con las respuestas obtenidas .. probastes los ejemplos?.

Un saludo,

PD: Dentro del protocoolo .. escribir en mayusculas alude a que estás GRITANDO (tal vez eso es lo que querías? .. ) .. Intenta usar las mayusculas con moderación ..
  #9 (permalink)  
Antiguo 26/04/2005, 11:30
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 19 años
Puntos: 0
imagen ahora con SQL y odbc_bin_mode

saludos, estuve probando los ejemplos como me indicaron y si salio, corrio como sedita.. sin broncas, gracias, ese fue un ejemplo sencillo para saber si funcionaba la libreria y como lo hacia, ahora estoy haciendo pruebas haciendo una consulta a una base de datos donde existe un campo donde hay una foto, el problema es que si le pongo la cabecera sale nada mas un cuadro con una espantosa x, no se como hacer referencia en el createimagefromjpeg(), adentro que le pongo para hacer referencia al campo, en vez de ponerle una direccion de carpetas, le tengo que poner el campo que esta seleccionando la consulta donde esta la foto.

este es el codigo:

<?Header("content-type: image/jpeg"); //si le quito la cabecera sale ASCII
$Link_ID = odbc_connect("prueba", "", "");
$Query_ID = odbc_exec($Link_ID, "SELECT foto FROM investigadores where ID=90"); //el 90 es la referencia del registro en la tabla donde esta la foto
// change to ODBC_BINMODE_CONVERT for comparison

odbc_binmode($Query_ID, ODBC_BINMODE_RETURN);

$Images = odbc_result($Query_ID, 1);

print $Images; //aqui ya le cambie por echo y con parentesis y nada.

?>


les agradecere alternativas para solucionar este problema con la imagen, estoy utilizando el odbc_bin_mode por que en este mismo foro me dijeron que se podia tratar la imagen de esa forma, si hay otra forma de hacer referencia a una foto y visualizarla con una consulta agradecere que me la sugieran, de antemano, gracias por la ayuda, a todos los miembros de este foro un saludo.
  #10 (permalink)  
Antiguo 26/04/2005, 15:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No sé si vistes bien mi mensaje anterior .. pero ahí comento que debes aislar ese código por separado en un script -a parte- y llamarlo desde otros por un tag de imagen HTML <img ....> como el ejemplo que te dejé.

Por lo demás .. no sé para que quieres usar "imagecreatefrom...()" .. Si tu adminstras tus imagenes en binario .. a no ser que quieras hacer algún proceso extra a tu imagen . .no es necesario que lo uses!.

A todo esto .. que formato MIME es tu imagen .. las que gestionas en tu BD? .. son jpg? .. son bmp? .. png? .. o cual? ..

Un saludo,
  #11 (permalink)  
Antiguo 26/04/2005, 16:54
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 19 años
Puntos: 0
saludos, fijate que si vi tu ejemplo y si me sirvio mucho, per ese mismo ejemplo se me hace dificil aplicarlo a lo que tengo hecho, ya tengo hecho un script que se conecta a una bd por odbc y hace una consulta a una tabla que tiene capo de textos y un campo de fotos, me hace la consulta bien pero a la hora de mostrar la foto sale codigo ascii, ahora vi tu ejemplo pero no puedo utilizarlo por que en el @imagecreatefromjpeg ves que se le pone la direccion de carpetas donde se encuentra ubicada la foto?, pues ahora no se como hacer referencia al campo de la foto y visualizarla, por eso estoy dando palos de ciego con el imgecreatefromjpeg y con el odbc_bin_mode, el ejemplo que me diste esta muy bien y si me corrio pero no lo puedo aplicar a la consulta que estoy haciendo para visualizar el campo de la foto, por que ademas no me trae solo el campo sino me trae todos entre ellos el de la foto, es lo que no se, como hacer referencia a la forma de llamar la foto como me enseñaste y como hago referencia al campo que la esta trayendo en la consulta, estoy con jpeg y no se si estoy aplicando el odbc_bin_mode bien, espero que me haya explicado. finalmente tengo que hacer una consulta a una bd que se trae un campo donde hay una foto y esa foto no se como visualizarla junto con los datos de la consulta. de antemano gracias.
  #12 (permalink)  
Antiguo 27/04/2005, 07:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Insisto una vez más .. ¿con que objetivo pretendes usar "imagecreatefromjpg()"? .. necesitas hacer algún thumbnail? o algún proceso a tu imagen "binaria" que ya está en tu BD? ...

Si no es así .. no necesitas para nada de esas funciones de las librerías GD (www.php.net/gd) .. Por lo demás . .de una fuente de datos "binaria" de una imagen .. tiene la función: imagecreatefromstring()

Cita:
si me corrio pero no lo puedo aplicar a la consulta que estoy haciendo para visualizar el campo de la foto, por que ademas no me trae solo el campo sino me trae todos entre ellos el de la foto,
Tienes que tener dos scripts por separado .. uno que extraiga la foto sólo (previa consulta SQL a tu BD) y otro que te extraiga tus campos de texto. Donde tenga que ir tu imagen en esa página HTML que compones con tus campos de textos .. llamas a tu <img src="ver_foto.php?foto_id=nose">

Fijate en este tutorial .. está enfocado a Mysql .. pero la técnica es la misma uses la BD que uses (sea algo por ODBC .o lo que sea).

http://www.forosdelweb.com/f18/tutorial-ejemplo-subir-archivos-bd-guardando-bd-binario-127775/

No sé si comprendes el "concepto" de lo que estás haciendo o como trabaja un navegador en sí .. pero, te paso a explicar un poco por encima .. por qué sino nunca comprenderas por qué "insisto" en que tienes que usar un par de scripts .. uno sobre todo que haga el trabajo de extraer tu imagen sólo ..

Un nanvegador .. cuando tu le envias una página le mandas unas cabeceras HTTP .. (las veas o no .. o sepas que existen o no se envian). Esas "cabeceras" indican que "tipo de datos" le estas enviando .. si es una página HTML .. le envias esas .. si es una imagen (como cuando haces un link tipo: http://www.tal.tal/imagen.jpg) las adecuadas .. cuando envias un "pdf" (por un link similar) .. lo mismo.

Ahora, cuando tu tienes una página "HTML" (para dar formato a tu página .. mostrar "texto" .. etc) y quieres llamar a una "imagen" .. para eso usas el tag de imagen HTML para tal fin: <img src="nose.tal"> .. Ese "tag" cara a tu navegador le dice "oye .. aquí va "binario" .. interpretalo como tal " ..y cuando termina .. "hey .. navegador .. continua como HTML normal .." .. y así con todo tag de ese estilo ..

Ahora .. tu tienes (o debes tenerlo) un script que "procesa" y genera una imagen .. ya sea por qué la tienes ya en "binario" de una BD o similar .. o la lee del sistema de archivos .. o la genera completamente dinámica con GD o similares librerias. Por eso, tu script PHP que "procesa esa imagen" .. una de las cosas que hace y debe hacer es enviar la cabecera HTTP aducada (mínimo esa) diciendo "hey .. estos datos que van son de tal tipo" (fomato MIME) y es por eso por qué en "HTML" se ha de llamar bajo un tag de imagen pero donde apunta a tu "script PHP" que lo genera.

Espero que te quede claro ahora ... por qué sino, andaras dando tumbos por aquí y por allá probando cosas sin "sentido" o con cierta base del por qué es necesario o no y por qué por ejemplo ves ese "ascii" si no indicas cabeceras HTTP o pretendes enviarlo en una página HTML común (por defecto si no indicas que formato es .. se asume que es HTML o texto plano común)

Un saludo,
  #13 (permalink)  
Antiguo 27/04/2005, 14:24
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 19 años
Puntos: 0
saludos, eso era lo que te decia, que ando dando palos de ciego, y yo queria hacer solo una consulta para que me visualizara el texto y la imagen, con esta breve explicacion ya le voy entendiendo, voy a checar el manual del link y hacer mis pruebas, primero con la consulta que me traiga la imagen, ya despues de eso, ya estoy del otro lado por que lo unico que tengo que hacer es jalar ese script a donde se ejecuta la otra consulta (con texto).

no, no tengo que hacerle nada a la imagen, solo visualizarla.

te agradezco tu ayuda, voy hacer mis pruebas y a aplicar los ejem. que me haz dado.

si tengo alguna duda, regresare a este foro, ya que es uno de los mas nutridos, por que en el de la pagina php en castellano, ahi esta el foro pero nadie lo contesta, es una tristeza que ese espacio este desperdiciado, hay muchos post pero nadie los contesta.

gracias
  #14 (permalink)  
Antiguo 29/04/2005, 16:07
 
Fecha de Ingreso: abril-2005
Mensajes: 39
Antigüedad: 19 años
Puntos: 0
visualizar imagenes con consulta sql desde odbc

saludos a todos los miembros del foro, estoy con un problema desde hace un rato y por mas que me dan ejem. sigo sin entender, no puedo visualizar una imagen jpeg haciendo consulta a una bd por odbc:

este es el codigo:

<?
$Link_ID = odbc_connect("prueba", "", "");
$Query_ID = odbc_exec($Link_ID, "SELECT foto FROM investigadores where ID=90");

// change to ODBC_BINMODE_CONVERT for comparison

odbc_binmode($Query_ID, ODBC_BINMODE_RETURN);

$Images =odbc_result($Query_ID,"foto");

echo $Images;
?>

me dijeron que hiciera una consulta para sacar la foto de la bd con un script y tener otro script para visualizarla, bueno despues de aqui que sigue, ya hice la conexion , hice la consulta extraigo el campo de foto hago la conversion con odbc_bin_mode, la paso a una variable y luego con un echo la quiero visualizar y nada, sale puro ascii, ha!!! y mando llamar este script desde un html con el tag para imagenes y no sale, y otra cosa curiosa (al menos para mi), es que cuando le pongo header("content-type:image/jpeg"); hasta arriba, sale como resultado un cuadro con una x roja.

quiero advertirles que soy primerizo en php, varios me han querdio explicar lo de las cabeceras y me mandan a manuales (que no entiendo), lo que quiero que me expliquen es:

1.- puedo visualizar el resultado de la consulta aqui mismo o debo de utilizar otro script para visualizar, y si es asi como.

2.- no se si estoy utilizando bien el odbc_bin_mode, me dijeron que se podia utilizar el imagecreatefromstring(), lo cual no se usar ya que si le pongo dentro de los parentesis la variable $images, me dice que nananina, no se reconoce el formato.

3.- este script me saca lo que hay en el campo foto pero como lo visualizo?, podrian ponerme un ejm. simple, o decirme que me hace falta, por que me dijeron que si estaba utilizando el odbc_bin_mode no era necesario utilizar imagecreatefromjpeg() ni ninguna libreria de gd. el sr. cluster me facilito un manual (que no acabo de entenderlo por que soy principiante, perdon), y estoy muy confundido, pues si entiendo lo de las cabeceras (o eso creo), pero el ejm. que me facilito creo haberlo puesto igual y no me corre, por favor algo simple, despues de este script, que hace falta?.

de antemano gracias por el apoyo, espero no desesperarlos mucho, tenganme tantita paciencia, soy virgencito en esto del php, si se puede con manzanitas mejor, saludos.
  #15 (permalink)  
Antiguo 02/05/2005, 10:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por mi parte ya no sé como explicarte el procedimiento ..

Te he comentado que debes tener un script aparte que es ese mismo que usas con las cabeceras HTTP que indican el tipo de imagen que envias (MIME) .. ahora . .que te salga una "X" o no puede ser sin ir más lejos que indiques que tu imagen es por ejemplo un "JPG" y resulta que es otro tipo. Confirma que tipo de imagenes son las que usas en tus campos binario ..

El resto .. el "como" llamar a tu script por separado junto con el resto de datos que pueda tener ese registro ya lo tienes en el tutorial que te dejé el link (pero enfocado a Mysql) .. Es exactamente la misma técnica ... sólo que en tu caso tendrás tus funciones de OBDC en lugar de las de Msyql .. pero la idea es la misma:

Un script que lee tus registros .. y crea vínculos a tu script que va a obtener la imagen (una sólo por separado) para crear los tag de imagen: <img src="ver_imagen.php?id_imagen=n°">

Intenta colocar -todos- los scripts que usas para tus pruebas. Ahí iremos viendo que vas haciendo mal y las preguntas de rigor para saber y evaluar que partes están bien y cuales no.

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:24.