Ver Mensaje Individual
  #12 (permalink)  
Antiguo 12/09/2005, 07:28
Avatar de Escoffie
Escoffie
 
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Hola Huayayo:

Con respecto a que las fotos tengan siempre el mismo tamaño de ancho y alto, hay dos posibilidades:
1. Que la foto se aplaste cambiando sus proporciones.
2. Que la foto se recorte cambiando su forma (reencuadre).
Si fuera Photoshop, el primero es como cambiarle el tamaño con "image size" y el otro es como cambiarle el tamaño con "canvas size" o la herramienta "crop".

En mi humilde opinión ambas me parecen inadecuadas, pues hacen que la foto deje de representarse como originalmente es, ¿me explico? en el primer caso, aparece distorsionada (un flaco se vería gordo), y en el segundo aparece cortada. Pero si tuviera que elegir entre una de esas opciones, elegiría la segunda, pues recorta, pero sin distorsionar las cosas, lo cual se me hace bastante feo.

A reserva de que compartas mi opinión o no, lo que quieres hacer es muy sencillo. Sólo hay que cambiar unas cuantas líneas del código que publiqué aquí:

Sustituye:
Código PHP:
//INICIA PROCESO 
            
$dimensiones getimagesize($temp); //Dimensiones originales de la imagen 
            
$ratio = ($dimensiones[0] / $anchura); 
            
$altura round($dimensiones[1] / $ratio); 
            
$image imagecreatetruecolor($anchura,$altura); //crea la nueva imagen 
            
$FFF imagecolorallocate($img255,255,255); 
            
imagefill($image00$FFF); 
            
imagecopyresampled ($image$img0000$anchura$altura$dimensiones[0], $dimensiones[1]);//reescala 
Para cambiar (forzar) el tamaño al ancho y alto especificado:
//INICIA PROCESO
Código PHP:
            //$dimensiones = getimagesize($temp); //Dimensiones originales de la imagen 
            
$anchura=250//medida en píxeles, aquí pones lo que quieras
            
$altura 250//medida en píxeles, aquí pones lo que quieras
            
$image imagecreatetruecolor($anchura,$altura); //crea la nueva imagen 
            
$FFF imagecolorallocate($img255,255,255); 
            
imagefill($image00$FFF); 
            
imagecopyresampled ($image$img0000$anchura$altura$dimensiones[0], $dimensiones[1]);//cambia las proporciones al tamaño especificado 
Para el caso del reencuadre, sería algo así:
Código PHP:
//INICIA PROCESO 
            
$dimensiones getimagesize($temp); //Dimensiones originales de la imagen 
            
$anchura=250//medida en píxeles, aquí pones lo que quieras
            
$altura 250//medida en píxeles, aquí pones lo que quieras 
            
$image imagecreatetruecolor($anchura,$altura); //crea la nueva imagen 
            
$FFF imagecolorallocate($img255,255,255); 
            
imagefill($image00$FFF); 
            
imagecopyresampled ($image$img0000$dimensiones[0], $dimensiones[1], $dimensiones[0], $dimensiones[1]);//rellena el rectángulo del tamaño especificado con la imagen, sólo será visible lo que quepa de la imagen, el relleno empieza desde 0x, 0y (esquina superior izquierda) 
En ambos casos, tendrías que cambiar los parámetros de la función y aplicar el cambio tanto donde se hace el thumbnail como en la imagen grande, pues sólo recibe la anchura (pues la altura la calculaba proporcionalmente).

Para más información sobre los parámetros de estas funciones, puedes revisar www.php.net/imagecopyresampled

Importante: no he probado estos cambios. Si no funciona será cosa de que revises los parámetros que se le pasan a cada función

Hay me platicas cómo te fue.