Foros del Web » Programando para Internet » PHP »

Tamaño de imagenes en miniatura

Estas en el tema de Tamaño de imagenes en miniatura en el foro de PHP en Foros del Web. Hola amigos, en este foro consegui el siguiente código para crear imagenes en miniatura Código PHP: /**      * Funcion para redimensionar una imagen      *      * @parameter string     image_file    direccion con nombre a la imgen          *  original      * @parameter string     dest_file_name direccion con nombre a la imagen          * destino      * @parameter float width     ancho de la imagen final      * @parameter float height     alto de la imagen final ...
  #1 (permalink)  
Antiguo 19/10/2010, 12:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 101
Antigüedad: 15 años, 4 meses
Puntos: 0
Tamaño de imagenes en miniatura

Hola amigos, en este foro consegui el siguiente código para crear imagenes en miniatura
Código PHP:
/**
     * Funcion para redimensionar una imagen
     *
     * @parameter string     image_file    direccion con nombre a la imgen
         *  original
     * @parameter string     dest_file_name direccion con nombre a la imagen
         * destino
     * @parameter float width     ancho de la imagen final
     * @parameter float height     alto de la imagen final
     * @return void
      */
    
function resizeImg($image_file,$dest_file_name,  $width=128$height=128){
    
// obtener las dimensiones de la imagen
    
$datos getimagesize($image_file);
    
$w $datos[0];        // original with
    
$h $datos[1];        // original height

    // crear una "copia" de la imagen original
    
$img2 imagecreatefromjpeg($image_file);

    
// crear una imagen de "true color" de ancho width y alto height
    
$img1 imagecreatetruecolor($width$height);

    
// redimensionamos la imagen
    
imagecopyresized($img1$img20,  000$width$height$w$h);

    
// guardar la imagen
    
imagejpeg($img1$dest_file_name);

    
// cerrar las imagenes
    
imagedestroy($img1);
    
imagedestroy($img2);

    } 
El problema que se me presenta es que la altura y el ancho de las imagenes es fijo, por lo tanto si tengo una imagen rectangular, la miniatura generada es cuadrada y la imagen se deforma. Alguien sabe como puedo solucionarlo?
__________________
Gimnasia y Esgrima La Plata, un sentimiento, no trates de entenderlo
  #2 (permalink)  
Antiguo 19/10/2010, 13:24
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: Tamaño de imagenes en miniatura

Este cálculo está basado en el ancho definido para la imagen:
Código PHP:
        if ($width>$maxWidth){
            if (
$width $height) {
            
$percentage = ($maxWidth $width);
            } else {
            
$percentage = ($maxWidth $height);
            }
            
            
$width round($width $percentage);
            
$height round($height $percentage); 
        } 
saludos
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 19/10/2010, 13:33
 
Fecha de Ingreso: diciembre-2008
Mensajes: 101
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Tamaño de imagenes en miniatura

Gracias por tu respuesta, ahora mi duda es: $width y $height son la altura y el ancho de la imagen original? y $maxWidth es el ancho maximo para la imagen en miniatura?
__________________
Gimnasia y Esgrima La Plata, un sentimiento, no trates de entenderlo
  #4 (permalink)  
Antiguo 19/10/2010, 13:54
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: Tamaño de imagenes en miniatura

Así es, $width y $height son de la imagen original y $maxWidth es el ancho de la miniatura; haz la prueba y nos comentas.
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **

Etiquetas: imagenes, miniatura, tamaño
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 14:53.