Foros del Web » Programando para Internet » PHP »

Mostrar imagen redimensionada al vuelo

Estas en el tema de Mostrar imagen redimensionada al vuelo en el foro de PHP en Foros del Web. Hola estoy usando la clase de imagenes del foro y intento crear thumbs al vuelo, sin guardarlos. En el ejemplo viene algo como esto: Código ...
  #1 (permalink)  
Antiguo 21/02/2012, 22:11
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Mostrar imagen redimensionada al vuelo

Hola estoy usando la clase de imagenes del foro y intento crear thumbs al vuelo, sin guardarlos. En el ejemplo viene algo como esto:
Código PHP:
imagen = new ModificarImagen($fila['imagen']);
$imagen->resize(100100);
header('Content-Type: ' $imagen->getImageType());
$imagen->output(); 
pero me muestra únicamente la imagen sin nada mas debido, supongo al header. ¿Hay forma de mostrar las imagenes escaladas al vuelo demas contenido HTML?
Si trato de hacerlo me muestra todo el código interno de la imagen.
  #2 (permalink)  
Antiguo 23/02/2012, 03:59
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Mostrar imagen redimensionada al vuelo

escaladas al vuelo supongo que te refieres a sin guardar. Si mal no recuerdo, al hacer una salida por pantalla de una imagen no puede haber ninguna otra salida antes de la llamada a header(). http://de.php.net/manual/en/function.header.php
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 23/02/2012, 09:02
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Mostrar imagen redimensionada al vuelo

Hola rapara2, si me refiero a escalar la imagen al vuelo sin guardarla. Claro antes de un header no se puedo mostrar nada, mi idea es que teniendo guardado un único tamaño estándar, al hacer por ejemplo un listado hacer lso thumbs al vuelo sin tener que guardarlos. No sé si se podrá, me imagino que si pero no encuentro ningún método que no se guardandola.
  #4 (permalink)  
Antiguo 24/02/2012, 00:39
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Mostrar imagen redimensionada al vuelo

Evidentemente que no puedes hacerlo sin guardar las imágenes.
De todas maneras esto no representa ningún problema, el tema es que tu enfoque es un poco complejo. Simplemente realiza la consulta, en un while creas y guardas todas la thumb en un directorio temporal. Al mostar por pantalla, si el thumb existe lo lees, si no, lo creas. Así haces el thumb una sola vez, cuando quieras puedes vaciar el directorio temporal. Si la imagen no existe se crea cuando haga falta. Casi seguro que distintas sessiones comparten de una forma u otra las imágenes con lo cual no tendrás mucha carga de CPU.
Otra solución es simplemente redimensionar en HTML directamente perdiendo resolución.
SAludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 24/02/2012, 18:52
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Mostrar imagen redimensionada al vuelo

Si, muchísimos usuarios usarán los mismo thumbs, ese es el problema, son muchas. Trataré de ver que solución es la mas óptima.

Gracias por tu ayuda ;)
  #6 (permalink)  
Antiguo 24/02/2012, 19:38
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Mostrar imagen redimensionada al vuelo

Generar los thumbs al vuelo no creo que sea la mejor opción, pero no veo donde tienes el problema, como lo estas haciendo exactamente ?, algo así ?:

Código HTML:
Ver original
  1. ...
  2. <img src="thumbnail.php?file=ident" />
  3. ...

y dentro de thumbnail.php estaría el código que tu tienes.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 25/02/2012, 12:14
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Mostrar imagen redimensionada al vuelo

No, exactamente como arriba, en un archivo independiente hago una consulta, obtengo todas las imagenes y hago esto a cada una:
Código PHP:
imagen = new ModificarImagen($fila['imagen']);
$imagen->resize(100100);
header('Content-Type: ' $imagen->getImageType());
$imagen->output(); 
Mi idea, equivocada, era obtener la imagen en tamaño estandar de la bd y redimensionarla en ciertas secciones con ese código. He descubierto que si le envio al navegador ese header le estoy indicando que muestre solo la imagen entonces pensé en quitarlo pero en ese caso me muestra una codificación extraña que, me imagino, será el contenido de la imagen.
  #8 (permalink)  
Antiguo 04/06/2012, 11:25
Avatar de engelsarcep  
Fecha de Ingreso: mayo-2012
Ubicación: Nicaragua
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Mostrar imagen redimensionada al vuelo

Aqui te dejo este Codigo !!!! funciona al 100%%%

<?php

$imagen_original = 'http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/385685_370119443025748_971041911_n.jpg';
$imagen_th = 'th_' . $imagen_original;
$ancho_th = 100;
$alto_th = 80;
$calidad = 100;

//redimensionar imagen
$imagenjpeg = CroppedThumbnailJPEG($imagen_original,$ancho_th,$a lto_th);
//guardar en directorio actual
imagejpeg($imagenjpeg,$imagen_th,$calidad);
imagedestroy($imagenjpeg);
//mostrar
echo "<p>Imagen original: </p><img src='$imagen_original' /></p>";
echo "<p>Imagen miniatura: </p><img src='$imagen_th' /></p>";



function CroppedThumbnailJPEG($imgSrc,$thumbnail_width,$thu mbnail_height) {
//getting the image dimensions
list($width_orig, $height_orig) = getimagesize($imgSrc);
$myImage = imagecreatefromjpeg($imgSrc);
$ratio_orig = $width_orig/$height_orig;

if ($thumbnail_width/$thumbnail_height > $ratio_orig) {
$new_height = $thumbnail_width/$ratio_orig;
$new_width = $thumbnail_width;
} else {
$new_width = $thumbnail_height*$ratio_orig;
$new_height = $thumbnail_height;
}

$x_mid = $new_width/2; //horizontal middle
$y_mid = $new_height/2; //vertical middle

$process = imagecreatetruecolor(round($new_width), round($new_height));

imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);
$thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height);

imagedestroy($process);
imagedestroy($myImage);
return $thumb;
}
?>
  #9 (permalink)  
Antiguo 04/06/2012, 11:27
Avatar de engelsarcep  
Fecha de Ingreso: mayo-2012
Ubicación: Nicaragua
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Mostrar imagen redimensionada al vuelo

se me olvidaba debes crear una carpeta que se llame th_ de donde sacas la imagen!!!!
  #10 (permalink)  
Antiguo 04/06/2012, 12:02
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Mostrar imagen redimensionada al vuelo

tenes que llamar a tu php redimensionador de imagen desde dentro de un tag img html. Como si se tratara de una imagen que de hecho lo que devuelve ese archivo ES una imagen.

EJ:
Cita:
<img src="http://tu-php-redimensionador.php?i=id_imagen&o=otroparametro&p= ..... y asi" />
en los parámetros que le pasas por la query le mandas que imagen tiene que redimensionar, el tamaño, podes mandarle lo que quieras.

Etiquetas: html, imagenes, vuelos
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 05:09.