2013-07-03 197 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