Os pongo mi código:
Código PHP:
@$datos_img = getimagesize($imagen);
$ancho_orig = $datos_img[0];
$alto_orig = $datos_img[1];
$propORIGINAL = devProporcion($ancho_orig,$alto_orig);
$propIMAGEN = devProporcion($anchoLienzo,$altoLienzo);
if($propORIGINAL<$propIMAGEN){
//Es mas panorámica que la ideal, dejamos blancos arriba y bajo
$anchoIMAGEN = $anchoLienzo;
$altoIMAGEN = round($anchoIMAGEN/$propORIGINAL);
$caso = "propORIGINAL<propIMAGEN";
//Volvemos a hacer comprobacion por si se sigue sobrepasando por el alto (REAJUSTE).
$margenAlto = ($altoLienzo - $altoIMAGEN)/2;
$margenAncho = 0;
if($altoIMAGEN>$altoLienzo){
$altoIMAGEN = $altoLienzo;
$anchoIMAGEN = round($altoIMAGEN * $propORIGINAL);
$margenAncho = ($anchoLienzo - $anchoIMAGEN)/2;
$margenAlto = 0;
}
}
else{
$altoIMAGEN = $altoLienzo;
$anchoIMAGEN = round($altoIMAGEN * $propORIGINAL);
$caso = "propORIGINAL>propIMAGEN";
//Volvemos a hacer comprobacion por si se sigue sobrepasando por el alto (REAJUSTE).
$margenAncho = ($anchoLienzo - $anchoIMAGEN)/2;
$margenAlto = 0;
if($anchoIMAGEN>$altoLienzo){
$anchoIMAGEN = $anchoLienzo;
$altoIMAGEN = round($anchoIMAGEN/$propORIGINAL);
$margenAlto = ($altoLienzo - $altoIMAGEN)/2;
$margenAncho = 0;
}
}
// CREO LA NUEVA IMAGEN
$lienzo = imagecreatetruecolor($anchoLienzo, $altoLienzo);
// Rellenamos el lienzo de color
imagefilledrectangle($lienzo, 0, 0, $anchoLienzo, $altoLienzo, 000000);
// ABRO LA IMAGEN FUENTE
if (!$imagen_fuente = abrir_Imagen($imagen)) {
return 0;
exit;
}
// COPIO LA IMAGEN FUENTE EN LA NUEVA
//imagecopyresampled($lienzo, $imagen_fuente, $margenAncho, $margenAlto, 0, 0, $anchoIMAGEN, $altoIMAGEN, $anchoLienzo, $altoLienzo);
imagecopyresized($lienzo, $imagen_fuente, $margenAncho, $margenAlto, 0, 0, $anchoIMAGEN, $altoIMAGEN, $anchoLienzo, $altoLienzo);
imagejpeg($lienzo, $destino, $calidad);
Gracias!