2013-07-03 152 views
0

如果图像大小超过50 kb,如何调整图像大小。如果文件大小超过50kb,调整图像大小

这是我现在的代码。

$sess=66666; 
$images = $_FILES["photoimg"]["tmp_name"]; 
$new_images = "$sess.gif"; 
$width=200; 
//*** Fix Width & Heigh (Autu caculate) ***// 
$size=GetimageSize($images); 
$height=round($width*$size[1]/$size[0]); 
if($size[2] == 1) { 
    $images_orig = imagecreatefromgif($images); 
} else if($size[2] == 2) { 
    $images_orig = imagecreatefromjpeg($images); 
}else if($size[2] == 3) { 
    $images_orig = imagecreatefrompng($images); 
} 
$photoX = ImagesX($images_orig); 
$photoY = ImagesY($images_orig); 
$images_fin = ImageCreateTrueColor($width, $height); 
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY); 
Imagejpeg($images_fin,"images/".$new_images); 
ImageDestroy($images_orig); 
ImageDestroy($images_fin); 
+2

我会建议使用,如果和测试中的条件文件的大小...你尝试过什么? –

+0

你为什么使用'Imagejpeg','GetimageSize'? PHP区分大小写!使用[imagejpeg](http://php.net/manual/ru/function.imagejpeg.php),[getimagesize](http://au1.php.net/manual/ru/function.getimagesize.php)代替 因此首先将所有内容都设置为小写,并且可能会工作 – vladkras

+1

@vladkras - 实际上....功能名称不区分大小写。 – andrewsi

回答

3

使用filesize()

$sess=66666; 
$images = $_FILES["photoimg"]["tmp_name"]; 
$new_images = "$sess.gif"; 
$maxsize = 50 * 1024; // 50Kb 

if(filesize($images) > $maxsize) { 
    $width=200; 
    //*** Fix Width & Heigh (Autu caculate) ***// 
    $size=getimagesize($images); 
    $height=round($width*$size[1]/$size[0]); 
    if($size[2] == 1) { 
     $images_orig = imagecreatefromgif($images); 
    } else if($size[2] == 2) { 
     $images_orig = imagecreatefromjpeg($images); 
    }else if($size[2] == 3) { 
     $images_orig = imagecreatefrompng($images); 
    } 
    $photoX = imagesx($images_orig); 
    $photoY = imagesy($images_orig); 
    $images_fin = imagecreatetruecolor($width, $height); 
    imagecopyresampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1,   $photoX, $photoY); 
    imagejpeg($images_fin,"images/".$new_images); 
    imagedestroy($images_orig); 
    imagedestroy($images_fin); 
} else { 
    imagejpeg($images,"images/".$new_images); 
} 
1

测试文件的大小是这样的:

$maxSize = 50 * 1024; 

$sess=66666; 
$images = $_FILES["photoimg"]["tmp_name"]; 

if(filesize($images) > $maxSize){ 

    $sess=66666; 
    $images = $_FILES["photoimg"]["tmp_name"]; 
    $new_images = "$sess.gif"; 
    $width=200; 
    //*** Fix Width & Heigh (Autu caculate) ***// 
    $size=GetimageSize($images); 
    $height=round($width*$size[1]/$size[0]); 
    if($size[2] == 1) { 
     $images_orig = imagecreatefromgif($images); 
    } else if($size[2] == 2) { 
     $images_orig = imagecreatefromjpeg($images); 
    }else if($size[2] == 3) { 
     $images_orig = imagecreatefrompng($images); 
    } 
    $photoX = ImagesX($images_orig); 
    $photoY = ImagesY($images_orig); 
    $images_fin = ImageCreateTrueColor($width, $height); 
    ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY); 
    Imagejpeg($images_fin,"images/".$new_images); 
    ImageDestroy($images_orig); 
    ImageDestroy($images_fin); 

} 
+2

当文件大小小于50kb时,文件未保存,并保留在临时目录中。另外50Kb是51200字节。另外,请不要做出重复的答案。 – Timmetje

+0

@TimDev我不会因为你的重复答案评论而将你举报,因为你的评论很有用。但是,请不要看时间戳,并责怪人们重复的答案。在时间戳上,您可以清楚地看到他在对方答案后仅3分钟回答。我对每一个答案都花了大约10分钟,所以他很确定他知道另一个答案在那里。 – NoobishPro