/* Esta funcion requiere GD 2.0.1 con soporte para creacion de gif */ function resizeImage($origen, $destino, $width, $height){ $retorno = false; $iOriginal = false; /* Obtengo la imagen original y creo la resizada y la final */ $size = getimagesize($origen); switch ($size[2]) { case 1: $iOriginal = imagecreatefromgif($origen); break; case 2: $iOriginal = imagecreatefromjpeg($origen); break; case 3: $iOriginal = imagecreatefrompng($origen); break; } if($iOriginal){ $radio = min(1, $width/$size[0], $height/$size[1]); $iWidth = $radio * $size[0]; $iHeight = $radio * $size[1]; $posX = ($width-$iWidth)/2; $posY = ($height-$iHeight)/2; $iResizada = imagecreatetruecolor($iWidth, $iHeight); $iFinal = imagecreatetruecolor($width, $height); /* Resizo, y lleno la imagen Final con el color de fondo */ imagecopyresampled($iResizada, $iOriginal, 0,0,0,0, $iWidth, $iHeight, $size[0], $size[1]); $colorBlanco = imagecolorallocate($iFinal, 255, 255, 255); imagefill($iFinal, 0,0, $colorBlanco); /* Copio la imagen Resizada a la Final */ imagecopy($iFinal, $iResizada, $posX, $posY, 0, 0, $iWidth, $iHeight); switch ($size[2]) { case 1: $retorno = imagegif($iFinal, $destino); break; case 2: $retorno = imagejpeg($iFinal, $destino, 85); break; case 3: $retorno = imagepng($iFinal, $destino); break; } imagedestroy($iResizada); imagedestroy($iFinal); } return $retorno; }