Foros del Web » Programando para Internet » PHP »

Ajustar dimensiones de una imagen

Estas en el tema de Ajustar dimensiones de una imagen en el foro de PHP en Foros del Web. Hola! Tengo este código que sirve para redimensionar imágenes: Código PHP:      // Se crea la imagen desde el campo binario de la BD      $img  =  imagecreatefromstring ( $imagen );      // Tamaño del Thumbanil (de la imagen a generar ..)      $picsize  =  ...
  #1 (permalink)  
Antiguo 13/06/2010, 16:11
 
Fecha de Ingreso: diciembre-2007
Ubicación: Buenos Aires
Mensajes: 328
Antigüedad: 16 años, 4 meses
Puntos: 1
Ajustar dimensiones de una imagen

Hola!

Tengo este código que sirve para redimensionar imágenes:

Código PHP:
    // Se crea la imagen desde el campo binario de la BD
    
$img imagecreatefromstring($imagen);

    
// Tamaño del Thumbanil (de la imagen a generar ..)
    
$picsize 300;
    
    
// Se obtienen los datos del ancho y alto de la imagen.
    
$new_w imagesx($img);
    
$new_h imagesy($img);

    
// Se calcula la relación alto/ancho
    
$aspect_ratio $new_h $new_w;
    
    
// Se ajusta al nuevo tamaño
    
$new_w $picsize;
    
$new_h abs($new_w $aspect_ratio);

// Se crea la mascara de la imagen nueva
    
$dst_img ImageCreateTrueColor($new_w,$new_h);

// Se copia y reajusta el nuevo tamaño en la nueva imagen.
     
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img)); 
$picsize = 300; es lo que determina el tamaño de la imagen redimensionada. El problema es que se redimensiona en 300 px de ancho, y yo necesito que sean 300 px de alto.

¿Cómo puedo hacer? Soy novato en php, disculpen y gracias desed ya!
  #2 (permalink)  
Antiguo 13/06/2010, 16:34
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Ajustar dimensiones de una imagen

entonces invierte la formula para el height:
Código PHP:
Ver original
  1. $aspect_ratio = $new_w / $new_h;
  2.    
  3.     // Se ajusta al nuevo tamaño
  4.     $new_h = $picsize;
  5.     $new_w = abs($new_h * $aspect_ratio);
  #3 (permalink)  
Antiguo 13/06/2010, 16:42
 
Fecha de Ingreso: diciembre-2007
Ubicación: Buenos Aires
Mensajes: 328
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ajustar dimensiones de una imagen

Lo probé antes pero no había funcionado, copié tu codigo y anduvo joya. Debo haber echo algo mal antes, muchas gracias!
  #4 (permalink)  
Antiguo 13/06/2010, 16:44
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Ajustar dimensiones de una imagen

que bien, lo único que hice fue cambiar las _h por las _w y viceversa
  #5 (permalink)  
Antiguo 13/06/2010, 16:48
 
Fecha de Ingreso: diciembre-2007
Ubicación: Buenos Aires
Mensajes: 328
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ajustar dimensiones de una imagen

Te hago una ultima consulta y no molesto más

Necesito que se redimensionen de dos maneras distintas: si la foto es "más alta que ancha" que mida por ejemplo 300 px, y si es "más ancha que alta" que mida 600px.

¿Sabrían mas o menos como hacerlo u orientarme?

Gracias!
  #6 (permalink)  
Antiguo 13/06/2010, 16:55
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Ajustar dimensiones de una imagen

simplemente con un condicional separas ambas formas:
Código PHP:
if($new_h $new_w){
    
$picsize 300;
    
$aspect_ratio $new_w $new_h;    
    
// Se ajusta al nuevo tamaño
    
$new_h $picsize;
    
$new_w abs($new_h $aspect_ratio);
}else{
//lo contrario
    
$picsize 600;
    
$aspect_ratio $new_h $new_w;
    
// Se ajusta al nuevo tamaño
    
$new_w $picsize;
    
$new_h abs($new_w $aspect_ratio);

fíjate que en ambos bloques la función es inversa

Etiquetas: dimensiones
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 19:31.