este es el script uso para redimensionar
Código PHP:
//Copyright © McAnam.com
function iPintaImagenRedimensionada ($sDirImagen, $bEscalable, $ancho, $alto, $iTipo){
$sDirImagen="http://www.dominio.com/foto.jpg";
$bEscalable="0";
$ancho="300";
$alto="0";
$iTipo="2";
// Cogemos los datos de la imagen
$vDatosImg = @getimagesize($sDirImagen);
if (!$vDatosImg) return -8;
// Recogemos el Tipo Mime
if (isset($vDatosImg['mime']))
$sTipo = $vDatosImg['mime'];
else if(isset($vDatosImg[2]))
$sTipo = image_type_to_mime_type($vDatosImg[2]);
else if (isset($iTipo))
$sTipo = image_type_to_mime_type($iTipo);
else
return -10;
// Recogemos la imagen a partir de la dirección dada ($sDirImagen)
switch($vDatosImg[2]){
case IMAGETYPE_GIF:
$imgOrigen = imagecreatefromgif($sDirImagen);
break;
case IMAGETYPE_JPEG:
$imgOrigen = imagecreatefromjpeg($sDirImagen);
break;
case IMAGETYPE_PNG:
$imgOrigen = imagecreatefrompng($sDirImagen);
break;
case IMAGETYPE_SWF:
case IMAGETYPE_PSD:
case IMAGETYPE_BMP:
case IMAGETYPE_TIFF_II:
case IMAGETYPE_TIFF_MM:
case IMAGETYPE_JPC:
case IMAGETYPE_JP2:
case IMAGETYPE_JPX:
case IMAGETYPE_JB2:
case IMAGETYPE_SWC:
case IMAGETYPE_IFF:
return -11;
break;
case IMAGETYPE_WBMP:
$imgOrigen = imagecreatefromwbmp($sDirImagen);
break;
case IMAGETYPE_XBM:
$imgOrigen = imagecreatefromxbm($sDirImagen);
break;
default:
return -13;
break;
}
/*
Establecemos los tamaños:
- Si bEscalable viene como true.
Se multiplican los valores recibidos para ancho y alto
por el ancho y alto de la imagen,
así 0.5 sería la mitad de la imagen y 2 sería el doble
- Si bEscalable viene como false.
Los tamaños serán los pasados por ancho y alto directamente
- Si ancho o alto vienen como 0 o numero negativo,
el valor de esta propiedad será asignada proporcionalmente con
el valor de la otra.
- Si ancho y alto vienen como 0 o numero negativo, Error
*/
if (!(is_numeric($ancho)) || !(is_numeric($alto))) return -20;
if ($bEscalable){
if ($ancho > 0){
$ancho *= $vDatosImg[0];
if ($alto > 0) $alto *= $vDatosImg[1];
else $alto = $vDatosImg[1] * ($ancho / $vDatosImg[0]);
}else if ($alto > 0){
$alto *= $vDatosImg[1];
$ancho = $vDatosImg[0] * ($alto / $vDatosImg[1]);
}else{
return -21;
}
}else{
if (($ancho > 0) && ($alto < 1))
$alto = $vDatosImg[1] * ($ancho / $vDatosImg[0]);
else if (($alto > 0) && ($ancho < 1))
$ancho = $vDatosImg[0] * ($alto / $vDatosImg[1]);
else if (($alto < 1) && ($ancho < 1))
return -21;
}
// Se crea la nueva imagen redimensionada
if (function_exists("ImageCreateTrueColor"))
$imgDestino = ImageCreateTrueColor($ancho,$alto);
else
$imgDestino = ImageCreate($ancho,$alto);
ImageCopyResized ($imgDestino, $imgOrigen, 0, 0, 0, 0, $ancho, $alto, $vDatosImg[0], $vDatosImg[1]);
/*
Se envía la cabecera de los datos de la imagen.
Cuando llegue aquí no debe de haber sido enviado NADA.
Si se ha enviado algo, aunque fuera un "intro" o espacio daría error
*/
header("Content-type: ".$sTipo);
// Se pinta la imagen según el tipo
switch($vDatosImg[2]){
case IMAGETYPE_GIF:
imagegif($imgDestino);
break;
case IMAGETYPE_JPEG:
imagejpeg($imgDestino, $save_view);
break;
case IMAGETYPE_PNG:
imagepng($imgDestino);
break;
case IMAGETYPE_SWF:
case IMAGETYPE_PSD:
case IMAGETYPE_BMP:
case IMAGETYPE_TIFF_II:
case IMAGETYPE_TIFF_MM:
case IMAGETYPE_JPC:
case IMAGETYPE_JP2:
case IMAGETYPE_JPX:
case IMAGETYPE_JB2:
case IMAGETYPE_SWC:
case IMAGETYPE_IFF:
return -12;
break;
case IMAGETYPE_WBMP:
imagewbmp($imgDestino);
break;
case IMAGETYPE_XBM:
imagexbm($imgDestino);
break;
default:
return -13;
break;
}
imagedestroy($imgOrigen);
imagedestroy($imgDestino);
return 1;
}
function ErrorPintaImagenRedimensionada($iRetorno){
$sTexto1 = "";
$sTexto2 = "";
switch($iRetorno){
case -8:
$sTexto1 = "La dirección de la imagen dada no es válida";
break;
case -10:
$sTexto1 = "No se ha encontrado el tipo mime de la imagen";
$sTexto2 = "ni en sus cabeceras ni pasadas por parámetro";
break;
case -11:
$sTexto1 = "El tipo de la imagen dado no se puede redimensionar";
$sTexto2 = "Se recomiendan los tipos jpg, gif ó png";
break;
case -12:
$sTexto1 = "No es posible crear una imagen con el tipo dado";
$sTexto2 = "Se recomiendan los tipos jpg, gif ó png";
break;
case -13:
$sTexto1 = "El tipo mime no esta implementado";
$sTexto2 = "Se recomiendan los tipos jpg, gif ó png";
break;
case -20:
$sTexto1 = "Error en los parámetros pasados ancho (3º) ó alto(4º)";
$sTexto2 = "Los valores deben ser numéricos enteros o decimales";
break;
case -21:
$sTexto1 = "Error en los parámetros pasados ancho (3º) y alto(4º)";
$sTexto2 = "al menos uno de estos parámetros deben de ser positivos";
break;
default:
if ($iRetorno < 0) $sTexto1 = "Error desconocido";
break;
}
if ($sTexto1 != ""){
$imagen = imagecreate (400, 40);
$cFondo = imagecolorallocate ($imagen, 255, 226, 169);
$cTexto = imagecolorallocate ($imagen, 153, 102, 0);
imagefilledrectangle ($imagen, 0, 0, 150, 30, $cFondo);
if ($sTexto2 == ""){
imagestring ($imagen, 3, 5, 15, $sTexto1, $cTexto);
}else{
imagestring ($imagen, 3, 5, 5, $sTexto1, $cTexto);
imagestring ($imagen, 3, 5, 20, $sTexto2, $cTexto);
}
header("Content-type: image/png");
imagepng($imagen);
imagedestroy($imagen);
}
}
$iError = iPintaImagenRedimensionada("imagen.jpg", TRUE, 0.5, -1, IMAGETYPE_JPEG);