Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2008, 06:15
layker
 
Fecha de Ingreso: noviembre-2007
Mensajes: 264
Antigüedad: 16 años, 5 meses
Puntos: 0
redimensionar imagenes

Hola tengo este codigo para redimensionar imagenes.. me interesa aparte de redimensionar esta, hacer otra mas peqeña y cuadara tipo 50x50 o 70x70 pero quisiera me la imagen no quedase chafada ni estirada que es lo que sucede cuando se ponen cuadradas... se puede hacer esto de alguna manera??? gracias ... un saludo

Cita:

// Funcion para crear string aleatorio
function genera_aleatorio($longitud){
$exp_reg="[^A-Z0-9]";
return substr(eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())),
0, $longitud);
}
$nombre_imagen = genera_aleatorio(10); // Longitud de la cadena

//Obtener datos de la imagen
$info = getimagesize($_FILES['archivo']['tmp_name']);
//segun el caso sera jpg, gif, png
switch ($info[2]) {
case 1:
$imagen = imagecreatefromgif($_FILES['archivo']['tmp_name']); break;
case 2:
$imagen = imagecreatefromjpeg($_FILES['archivo']['tmp_name']); break;
case 3:
$imagen = imagecreatefrompng($_FILES['archivo']['tmp_name']); break;
// etcétera //
}

$original = $imagen;
// devuelve anchura de la imagen y altura
$original_w = imagesx($original);
$original_h = imagesy($original);

$max = 450; //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS

if($original_w>$original_h) {
$muestra_w = $max;
$muestra_h = intval(($original_h/$original_w)*$max);
} else {
$muestra_w = intval(($original_w/$original_h)*$max);
$muestra_h = $max;
}

// Crea una imagen en color real
$muestra = imagecreatetruecolor($muestra_w,$muestra_h);

//Copia y reescala parte de una imagen con remuestreo
imagecopyresampled($muestra,$original,0,0,0,0, $muestra_w,$muestra_h,$original_w,$original_h);
imagedestroy($original); // aqui destruyo el original, pues no hace falta ya

$foto = "$nombre_imagen.jpeg";

if(!imagejpeg($muestra, "fotos/$foto", "50"))
{
echo "Error al subir la imagen.";
exit;
}