Foros del Web » Programando para Internet » PHP »

Problema con Header("Content-Type: image/jpeg")

Estas en el tema de Problema con Header("Content-Type: image/jpeg") en el foro de PHP en Foros del Web. Tengo un lapsus mental con la función header(), a ver si alguie puede guiarme que está mal aquí: en un fichero llamado imagen.html tengo: Código ...
  #1 (permalink)  
Antiguo 07/12/2002, 17:55
 
Fecha de Ingreso: marzo-2002
Mensajes: 135
Antigüedad: 15 años, 8 meses
Puntos: 1
Problema con Header("Content-Type: image/jpeg")

Tengo un lapsus mental con la función header(), a ver si alguie puede guiarme que está mal aquí:

en un fichero llamado imagen.html tengo:

Código PHP:
<img src=img.php?img=002/1036161059.jpg
y en un fichero llamado img.php pongo el código php:

Código PHP:
<? Header("Content-Type: image/jpeg");
$img_des "http://dominio.com/cugal3/thumbs/$img";
echo 
$img_des;
?>
¿por qué no se muestra la imagen al cargar imagen.html?

Gracias gente.
  #2 (permalink)  
Antiguo 07/12/2002, 18:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Eso no funciona así pues .. tienes q leer el la imagen -> cargarla en la variable -> lanzarla con al navegador con su cabecera correspondiente y echo ...

lee tu URL imagen con fopen() y luego le haces el echo:

Código PHP:
<?
$url_img
="http://www.forosdelweb.com/images/logos/navidad2002/logo06.gif";
$img_link fopen($url_img,"rb"); // rb modo binario para windows .. r para linux

Header("Content-Type: image/gif"); // se envia la cabecera...
while (!feof ($img_link)){ // se lee la imagen hasta fin de fichero (END OF FILE)
$img_des fgets ($img_link4096); // se cogen de bloques de 4 kbytes
echo $img_des// se mandan al navegador en este caso ..
}
fclose($img_link); // se cierra el link de fichero ..
?>


Si haces llamadas http:// a tus imagenes de tu sitio o de fuera de tu sitio (como es el ejemplo) .. la mayoria de veces filesize() no puede determinar el tamaño del fichero .. asi q no vas a poder usar fread(...,filesize(..)) q seria lo ideal si tus imagenes estan en el mismo servidor q corre PHP .. con lo cual puedes hacer llamadas a tus directorios de forma Absouluta /dir/dir/dir/img.tal .. y no relativa como se ha de hacer en una llamada a un fichero externo.

Un saludo,
  #3 (permalink)  
Antiguo 07/12/2002, 19:23
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 15 años
Puntos: 0
Una alternativa más rápida...

Parecido a la solución de Cluster. Y directamente usable por tu script, sencillamente:


Código PHP:
<?
Header
("Content-Type: image/jpeg"); // se envia la cabecera...
@readfile($_GET['img']);
?>
1 Saludo.
  #4 (permalink)  
Antiguo 07/12/2002, 19:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Las dos alternativas son válidas .. (hacen su trabajo ..) .. ahora si profundizamos un pco más (algunos diran 'pa ké' ... ) ...

Según dicen (me remito a php.net "user comments) .. readfile() tiene algunos problemas con el buffer si se usa compresion tipo gzip y cosas así ... Pero es cierto .. q en una linea haces lo q el otro método en 4 ...

Tambien desde PHP 4.3.0 está disponible:
file_get_contents() q vuelca el contenido del fichero en un string (cadena) ... (es equivalente a casi lo q puse yo mas arriba .. fopen etc ...)

Un saludo,
  #5 (permalink)  
Antiguo 08/12/2002, 07:01
 
Fecha de Ingreso: marzo-2002
Mensajes: 135
Antigüedad: 15 años, 8 meses
Puntos: 1
Tremenda vuestra ayuda; por lo que veo, yo estaba aun bastante lejos de la solución.

Muchas gracias!
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 02:21.