Mediante este simple script logro la reducción de la imagen.
Lo puedo aplicar comprobando la altura o el ancho de la imagen, nos serviría en los dos casos.
$ancho y $alto son los valores reales de la imagen.
$ext la extensión de la misma.
Nos servira si la imagen es jpg, png, jpeg.
Los valores de la imagen los obtengo de la siguiente manera:
global $ancho;
global $alto;
list($ancho, $alto, $tipo, $atributos) = getimagesize("temp/img.".$_SESSION['imgext']);
global $anchomax;
$anchomax = 900;
global $altomax;
$altomax = 900;
En el caso de que el ancho sea mayor que le premitido:
if($ancho > $anchomax){ ......
// La diferencia entre ancho real y permitido
global $anchodif;
$anchodif = ($ancho - $anchomax);
// Calculo el % de reducción en cualquier caso para que la imagen no se deforme
global $porcent;
$porcent = round((($anchodif * 100)/$ancho),2);
// El nuevo ancho es el real menos la diferencia
global $anchonew;
$anchonew = ($ancho - $anchodif);
//El nuevo alto será el alto real menos el % correspondiente
global $altonew;
$altonew = ($alto - (($alto * $porcent)/100));
$altonew = round($altonew,0);
En el caso del alto sería similar, manteniendo la proporción del ancho.
if($alto > $altomax){ ......
global $altomax;
$altomax = 900;
global $altodif;
$altodif = ($alto - $altomax);
global $porcent;
$porcent = round((($altodif * 100)/$alto),2);
global $altonew;
$altonew = ($alto - $altodif);
global $anchonew;
$anchonew = ($ancho - (($ancho * $porcent)/100));
$anchonew = round($anchonew,0);
De esta forma tenemos todos los valores necesarios para reducir la imagen.
//////////////////////////////////////////////////////////
if(($ext == 'jpg')||($ext == 'jpeg')||($ext == '')){
$img= imagecreatefromjpeg("temp/img.".$ext);}
elseif($ext == 'png'){ $img= imagecreatefrompng("temp/img.".$ext); }
$dst = ImageCreateTrueColor($anchonew, $altonew);
imagecopyresampled($dst, $img, 0, 0, 0, 0, $anchonew, $altonew, $ancho, $alto);
if(($ext == 'jpg')||($ext == 'jpeg')||($ext == '')){
global $imgname;
$imgname = "img.jpg";
imagejpeg($dst,'imagenes/'.$imgname);
}
elseif($ext == 'png'){
global $imgname;
$imgname = "img.".$ext;
imagepng($dst,'imagenes/'.$imgname);
}else{ }
Espero que os sea útil.
No hay comentarios:
Publicar un comentario
Gracias por vuestros aportes.