Foros del Web » Programando para Internet » PHP »

Problema con Opera y Thumbs (I.E. funciona bien)

Estas en el tema de Problema con Opera y Thumbs (I.E. funciona bien) en el foro de PHP en Foros del Web. Cuando quiero generar una imagen ms pequea a partir de una mayor, el Opera me muestra en pantalla caracteres raros: Cita: ഻MRZ‘B.™u!aT֤21‹‹-E#€8$„4•VP?�!b$’Š—dawNJ�efg:J /QE˜r[Ȳ‘ž1V!�`Rb)`!J:f-Q]@j)C,{‡ˆ|F ?:ps1@)/- ...
  #1 (permalink)  
Antiguo 17/08/2004, 09:39
Avatar de Terminator  
Fecha de Ingreso: julio-2004
Ubicacin: San Isidro, Buenos Aires
Mensajes: 176
Antigedad: 13 aos, 5 meses
Puntos: 0
Problema con Opera y Thumbs (I.E. funciona bien)

Cuando quiero generar una imagen ms pequea a partir de una mayor, el Opera me muestra en pantalla caracteres raros:
Cita:
഻MRZ‘B.™u!aT֤21‹‹-E#€8$„4•VP?�!b$’Š—dawNJ�efg:J /QE˜r[Ȳ‘ž1V!�`Rb)`!J:f-Q]@j)C,{‡ˆ|F ?:ps1@)/- ŽRBTW�ZmMN˜%} VK;zœU†EjŽvۯ55zziQŠhndopT^L~VfŽ3S“A UY'O™:NPEH ›”Š�WŒK’} wLcOɨ†.�:H$ŽL…$⤳�„›H}kJLB* Š”(Š
Visualizando lo mismo con el Internet Explorer, la imagen se muestra sin problemas... con calidad baja pero con TrueColor se muestra muy bien.
Sin dudas es un problema de Opera pero lo posteo ac porque es por un tema relacionado con la funcion de PHP y no s cual puede ser la solucion.

El cdigo que uso el siguiente:
Cita:
<?

// Utilizando imagecopyresized() para crear un thumbnail automatico

$nombre_imagen = "foto_silla2.jpg";

// Debo indicar bien el destino del directorio de la imagen
$imagen_origen = ImageCreateFromJPEG($nombre_imagen);

// Calculo el tamao de la imagen original
$tam_ancho = imagesx($imagen_origen);
$tam_alto = imagesy($imagen_origen);


// Calculo la mitax, para reducirla al 50 %
$ancho = $tam_ancho /2;
$alto = $tam_alto /2;

// Creo la nueva imagen de destino con las medidas (todavia esta vacia)
// Si la imagen no se ve en calidad adecuada reemplazar imagecreate por imagecreatetruecolor
$imagen_destino = ImageCreate($ancho, $alto);
imagecopyresized($imagen_destino, $imagen_origen, 0, 0, 0, 0, $ancho, $alto, $tam_ancho, $tam_alto);

// Guardamos la imagen en un archivo con le mismo nombre de la imagen original, pero precedido de thumb_
$nombre_destino = "thumb_".$nombre_imagen;

// Guardamos la imagen_generada
ImageJPEG($imagen_destino,$nombre_destino,75);

// Mostramos la imagen
ImageJPEG($imagen_destino,'',75);
ImageDestroy($imagen_destino);
die();




?>

Por otro lado, un ejemplo similar anda muy bien en ambos navegadores:
Cita:
<?

// Utilizando imagecopyresized()

// Definimos la imagen a utilizar
$imagen = ImageCreateFromJPEG("foto_silla2.jpg");
Header("Content-type: image/jpeg");

imagecopyresized ($imagen, $imagen, 1, 1, 100, 100, 80, 80, 100, 100);

// Mostramos la imagen que deberia ser verde
ImageJPEG($imagen, '', 75);

// Destruimos la imagen
ImageDestroy($imagen);


?>
Informacion GD:
Cita:
GD Support enabled
GD Version bundled (2.0.23 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
Versin del Opera: 7.54 (en Ingls)
Versin PHP: 4.3.8
Version Apache: 2.0.50

Gracias.

ltima edicin por Terminator ; 17/08/2004 a las 09:48
  #2 (permalink)  
Antiguo 17/08/2004, 10:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Si aades la cabera HTTP que indica de que tipo es el dato que vas a enviar a tu cliente (navegador) en el cdigo que dices que no anda en Opera .. debra funcinonar correctamente:

Header("Content-type: image/jpeg");

De hecho IE tendra que comportarse igual que Opera por qu en el primer ejemplo no definistes que tipo de "dato" ests enviando ..

Un saludo,
  #3 (permalink)  
Antiguo 17/08/2004, 10:31
Avatar de Terminator  
Fecha de Ingreso: julio-2004
Ubicacin: San Isidro, Buenos Aires
Mensajes: 176
Antigedad: 13 aos, 5 meses
Puntos: 0
Anduvo perfecto...
No me di cuenta de eso porque esos ejemplos son de un libro, no los he hecho yo que recien empiezo con PHP.

Ahora bien... he visto que funciona colocandolo en cualquier parte del cdigo menos despues del die(). Esto es as siempre o es mejor colocarlo en algn lugar en especial?

Existen cdigos similares a este Header("Content-type: image/jpeg"); ???
pregunto porque seguro me voy a topar con algn otro que me cause un dolor de cabeza...

Muchas gracias, ahora voy a poder continuar con la seccin wallpapers tranquilo, ya que si no andaba en Opera no haca nada
  #4 (permalink)  
Antiguo 17/08/2004, 13:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Cita:
Ahora bien... he visto que funciona colocandolo en cualquier parte del cdigo menos despues del die(). Esto es as siempre o es mejor colocarlo en algn lugar en especial?
En realidad da igual donde lo coloques .. eso s, antes de la llamada a esa funcin header() (para cualquier tipo de envio de cabeceras HTTP al cliente) .. NO debe existir nada de salida al cliente .. (nada de HTML, de echo "algo" .. javascript .. etc)

Justamente un "die()" es la funcin para "terminar el script con un mensaje de aviso" .. eso ya es considerado como "salida" al cliente.

Cita:
Existen cdigos similares a este Header("Content-type: image/jpeg"); ???
pregunto porque seguro me voy a topar con algn otro que me cause un dolor de cabeza...
Bueno .. si, .. todo eso lo define el protocolo HTTP con el cual ests trabajando .. Lo peudes ver en sus RFC's correspondientes (usa google: rfc http y las veras). De hecho con esa cabecera indicas que tipo de archivo es .. pero por ejemplo te faltara algunas ms como la de indicar el nombre final que tendr el archivo (si le das a tu "thumb" a "guardar como ...." de esa imagen veras que todas tendrn el nombre del script.php que usastes .. ), o indicar el "peso" del archivo (como para que un gestor de descaga calcule bien cuanto queda de la misma) y .. as un largo etc.

Slo recuerda que esto de las "cabeceras HTTP" no son prpias de PHP .. PHP slo te pone a tu disposicin funciones como .. header() para que las "lanzes" al cliente.

Un saludo,
Atencin: Ests leyendo un tema que no tiene actividad desde hace ms 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 03:30.