Foros del Web » Programando para Internet » PHP »

Tamaño de las imagenes

Estas en el tema de Tamaño de las imagenes en el foro de PHP en Foros del Web. Hola, a ver si me podeis ayudar un poco con este tema, para subir imagenes y luego guardar una copia de esa imagen en pequeño, ...
  #1 (permalink)  
Antiguo 27/02/2008, 05:25
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Tamaño de las imagenes

Hola, a ver si me podeis ayudar un poco con este tema, para subir imagenes y luego guardar una copia de esa imagen en pequeño, pasandole el parametro de la altura que ha de tener, utilizo este codigo:

Código PHP:
function thumbjpeg($imagen,$altura) 
{
    $nombre = $imagen;
    $camino = "fotosg/";
    $dir_thumb = "fotosp/";
    
    $ruta = $nombre;    
    
    if (!file_exists($dir_thumb.$nombre))
    {
        $img = imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino"."$nombre<br>\n");

        $datos = getimagesize($camino.$nombre) or die("Problemas con .$camino"."$nombre. <br>\n");

        $ratio = ($datos[1] / $altura);
        $anchura = round($datos[0] / $ratio);
         
        $thumb = imagecreatetruecolor($anchura,$altura);

        imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);

        imagejpeg($thumb, $dir_thumb.$nombre);
      
        return $ruta;
    }
    else
    {
        ?>
            <script>
                alert("Este nombre ya existe en la base de datos, cambialo");
            </script>
        <?php
    
}
}


Que lo que haces es crear las dos imagenes una al tamaño original y otra en pequeño, pero ahora lo que quiero es fijarle los parametros de altura y anchura a la imagen que crea en pequeño, me esplico:

1- Si la imagen es mas alta que ancha:

Altura: 150px
Anchura: 100px

2- Si la imagen es mas ancha que alta:

Altura: 100px
Anchura: 150px

Como puedo comprobar cuando una imagen es mas ancha que alta o al revés, gracias


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #2 (permalink)  
Antiguo 27/02/2008, 08:07
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 3 meses
Puntos: 5
Re: Tamaño de las imagenes

Hola:

Bueno, no sé si te será de ayuda o no , pero yo creo que todo radica en la función get_image_size que retorma un arreglo con las dimensiones de la imagen en cuestión, bastaría con comprobar dichos valores para determinar si el ancho u alto es mayor o no.

yo utilizo una función que me hice precisamente para ver esto del tamaño de la imagen y así poder establecer las medidas dinamicas de la etiqueta img de acuerdo al tamaño de cada imagen.

Código PHP:
function obtenerTamanoImagen($prodCod){
/**
* @Autor: Aarón García A.
* @Fecha: 28/01/2008
* @Descripción: Permite recuperar el tamaño de la imagen de un producto
*/

   
$rutaServer $_SERVER['DOCUMENT_ROOT'];
   
$rutaServer .= '/gvm/images/productos/'$prodCod;

   
$rutaArchivo completarRutaArchivo($rutaServer);

   
$tam getimagesize($rutaArchivo);
   
$posicion strpos($tam['mime'],'/' );
   
$extension substr($tam['mime'],$posicion 1);

   
$imagen = array('Ancho' => $tam[0],
                          
'Alto'  => $tam[1],
                      
'Ext'   => $extension);

   return 
$imagen;



Espero ser de ayuda, espero comentarios.

Nos vemos....
  #3 (permalink)  
Antiguo 27/02/2008, 18:35
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Re: Tamaño de las imagenes

A voz de pronto, me ha salido esto:

Código PHP:
function obtenerTamanoImagen($imagen)
    {
        
//$rutaServer = $_SERVER['DOCUMENT_ROOT'];
              //$rutaServer .= '/gvm/images/productos/'. $prodCod;

           //$rutaArchivo = completarRutaArchivo($rutaServer);

           
$tam getimagesize($imagen);
           
$posicion strpos($tam['mime'],'/' );
           
$extension substr($tam['mime'],$posicion 1);

           
$anchura $tam[0],
        
$altura  $tam[1],
        
        
$rruta thumbjpeg($imagen$altura$anchura);
        
        return 
$ruta;
    }  

    function 
thumbjpeg($imagen,$altura$anchura
    {
        
$nombre $imagen;
        
$camino "fotosg/";
        
$dir_thumb "fotosp/";
        
        
$ruta $nombre;    
        
        if (!
file_exists($dir_thumb.$nombre))
        {
            
$img imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino"."$nombre<br>\n");
    
            
$datos getimagesize($camino.$nombre) or die("Problemas con .$camino"."$nombre. <br>\n");
    
            if(
$anchura $altura)
            {
                
$altura "100";
                
$anchua "150";
            }
            else
            {
                
$altura "150";
                
$anchua "100";
            }    
                
            
//$ratio = ($datos[1] / $altura);                
            //$anchura = round($datos[0] / $ratio);
             
            
$thumb imagecreatetruecolor($anchura,$altura);
    
            
imagecopyresampled ($thumb$img0000$anchura$altura$datos[0], $datos[1]);
    
            
imagejpeg($thumb$dir_thumb.$nombre);
          
            return 
$ruta;
        }
        else
        {

        }
    } 
Mañana hare pruebas, para ver si funciona, ya te dire algo


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
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 16:23.