Hola,
Un ejemplo probado ok, por si lo quieres adaptar.
Código PHP:
<?php
function fun_resizejpg($imgsrc,$imgnew,$newx,$newy,$quality){
if( file_exists($imgsrc) ) {
list($srcx,$srcy,$ext) = getimagesize($imgsrc);
switch( $ext) {
case 1 :
$old = imagecreatefromgif($imgsrc);
$img = imagecreate($srcx,$srcy);
imagecolorallocate($img, 255, 255, 255);
imagecopy($img,$old,0,0,0,0,$srcx,$srcy);
break;
case 2 :
$img = imagecreatefromjpeg($imgsrc);
break;
case 3 :
$img = imagecreatefrompng($imgsrc);
break;
case 6:
$img = imagecreatefromwbmp($imgsrc);
break;
default:
print_r(getimagesize($imgsrc));
return false; }
$tamx=$srcx;
$tamy=$srcy;
if($srcx>$newx)
$pv=($srcx>$srcy)?$srcx/$newx:$srcy/$newy;
elseif($srcy>$newy)
$pv=($srcy>$srcx)?$srcy/$newy:$srcx/$newx;
if(isset($pv)){
$srcx=ceil($srcx/$pv);
$srcy=ceil($srcy/$pv); }
$new = imagecreatetruecolor ($srcx, $srcy);
imagecopyresampled ($new, $img, 0, 0, 0, 0, $srcx, $srcy, $tamx, $tamy);
imagejpeg($new,(substr($imgnew,0,strrpos($imgnew,"."))).".jpg",$quality);
imagedestroy($img);
return true;
}
else
return false;
}
if(isset( $_FILES["foto"]["name"])){
$_FILES["foto"]["name"] = str_replace(" ","_",$_FILES["foto"]["name"]);
move_uploaded_file($_FILES["foto"]["tmp_name"], "./images/".$_FILES["foto"]["name"]);
$imgsrc= "./images/".$_FILES["foto"]["name"];
$imgnew= "./images/".$_FILES["foto"]["name"];
$ancho=getimagesize($imgsrc);
$factor=400/$ancho[0];
$newx=$ancho[0]*$factor;
$newy=$ancho[1]*$factor;
$quality=80;
fun_resizejpg($imgsrc,$imgnew,$newx,$newy,$quality);
}
?>