la imagen grande me la crea bien, pero kisiera que en la pekeña se centrara en la medida de lo posible. me crea una imagen de 80x120 pero no se ve centrada y muchas fotos no se ven bien. alguien m puede ayudar?? espero haberme explicado bien. gracias
Código PHP:
<?php
//Obtener datos de la imagen
$info = getimagesize($_FILES['imagen']['tmp_name']);
switch ($info[2]) {
case 1:
$imagen = imagecreatefromgif($_FILES['imagen']['tmp_name']); break;
case 2:
$imagen = imagecreatefromjpeg($_FILES['imagen']['tmp_name']); break;
case 3:
$imagen = imagecreatefrompng($_FILES['imagen']['tmp_name']); break;
}
$original = $imagen;
// devuelve anchura de la imagen y altura
$original_w = imagesx($original);
$original_h = imagesy($original);
$MAXIMO = 500; //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS
if($original_w>$original_h){
$muestra_w = $MAXIMO;
$muestra_h = intval(($original_h/$original_w)*$MAXIMO);
} else {
$muestra_w = intval(($original_w/$original_h)*$MAXIMO);
$muestra_h = $MAXIMO;
}
// 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
$ancho = imagesx($muestra);
$alto = imagesy($muestra);
// Crear imagen pequeña
$img = imagecreatetruecolor(80,120);
$MAXIMO = 120;
if($ancho>$alto) {
$y = $MAXIMO;
$x = intval(($ancho/$alto)*$MAXIMO);
$cox = $x-$MAXIMO;
$coy = 0;
} else {
$y = intval(($alto/$ancho)*$MAXIMO);
$x = $MAXIMO;
$coy = $y-$MAXIMO;
$cox = 0;
}
imagecopyresized($img,$muestra,0,0,$cox,$coy,$x,$y,$ancho,$alto);
$im = imagejpeg($img,"../imagenes/".$nombre."x.jpg", "100");
// FIN DE IMAGEN PEQUEÑA
$im2 = imagejpeg($muestra, "../imagenes/".$nombre.".jpg", "100");
?>