2012-08-28 234 views
0

上傳時是否可以縮小圖片尺寸?上傳時縮小圖片尺寸

上傳文件時,大小可以從2MB減小到500kb或更少或類似 ?

+0

之前或之後上傳? –

+0

你在談論什麼類型的圖片(PNG,JPG,BMP,別的)?你對哪種語言感興趣?你已經用3種不同的可能性標記了你的問題...... –

+1

如果你使用的是Java,在上傳之前肯定有圖書館可以幫助你縮小圖像的大小。如果您使用PHP,有幾個(Imagick,GD,Exactimage等)可以在上傳完成後爲您提供幫助。儘管在上傳過程中你不能這樣做。 – Crontab

回答

1

當然,它工作正常。我使用這個類在PHP中:

<?php 

    function thumbnail($img, $source, $dest, $maxw, $maxh) {  
     $jpg = $source.$img; 

     if($jpg) { 
      list($width, $height ) = getimagesize($jpg); //$type will return the type of the image 
      $source = imagecreatefromjpeg($jpg); 

      if($maxw >= $width && $maxh >= $height) { 
       $ratio = 1; 
      }elseif($width > $height) { 
       $ratio = $maxw/$width; 
      }else { 
       $ratio = $maxh/$height; 
      } 

      $thumb_width = round($width * $ratio); //get the smaller value from cal # floor() 
      $thumb_height = round($height * $ratio); 

      $thumb = imagecreatetruecolor($thumb_width, $thumb_height); 
      imagecopyresampled($thumb, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height); 

      $path = $dest.$img."_thumb.jpg"; 
      imagejpeg($thumb, $path, 75); 
     } 
     imagedestroy($thumb); 
     imagedestroy($source); 
    } 

?> 

imagejpeg($thumb, $path, 75);就是多少,你想要的大小和上傳後的圖像質量。

在調用PHP腳本:

if(isset($_FILES['img-content'])) { 
    $img = str_replace(" ","_",$_FILES['img-content']['name']); 
    move_uploaded_file($_FILES['img-content']['tmp_name'], "../../images/content/".$img); 
    $source = "../../images/content/"; 
    $dest = "../../images/thumb/"; 
    thumbnail($img, $source, $dest, 480, 400); 

}

+0

THX,但這將減少上傳後... ...和大小將減少輸出,但在服務器上將會有一個4 MB或2 MB的大文件...我們可以在上傳時縮小大小嗎? ...所以我可以從每個圖像500 kb的上傳限制爲用戶,並讓他們上傳任何大小和腳本將減小尺寸? – Harinder

+0

上傳後如何刪除舊圖片並保留縮略圖?希望它適合您的需要 –

+0

thx尋求幫助...但我想用戶上傳有配置文件的照片...所以我不能刪除所有圖像.... thx – Harinder