2012-04-12 73 views
2

我試圖添加一個功能到我的網站,用戶可以將其個人資料圖片設置爲來自外部網址的圖像,而不是將其保存到他們的電腦,然後將其上傳到我的服務器。檢查圖像文件類型

這是我想出迄今:

  $filename = $inputs['image_url']; 

      if(getimagesize($filename)){ 
       // Get new dimensions 
       list($width, $height) = getimagesize($filename); 
       $new_width = 100; 
       $new_height = 100; 

       // Resample 
       $image_p = imagecreatetruecolor($new_width, $new_height);           

       //a check needs to be done here $image = imagecreatefromjpeg($filename); 
       imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

       $filename = "profile_pictures/". md5(uniqid(rand(),true)).".jpg"; 

       imagejpeg($image_p,$filename,100); 
      }else{ 
       echo 'This is not an image'; 
      } 

的代碼可以下載.jpg圖像很好,但我想支持其它文件類型了。

我需要以某種方式檢查圖像的文件類型,所以我可以節省其他圖像的不同文件類型...

   if($extension=="jpg" || $extension=="jpeg"){ 
        $image = imagecreatefromjpeg($filename); 
       }else if($extension=="png"){ 
        image = imagecreatefrompng($filename); 
       }else{ 
        $image = imagecreatefromgif($filename); 
       } 

有誰知道一個功能,讓我做到這一點的?

在此先感謝您的答覆。

回答

2

最直接和GD兼容性檢查用戶可於字符串創建它:

$image = imagecreatefromstring(file_get_contents($filename)); 

如果無法加載,則知道您無法處理該圖像。

但見以及getimagesize,它檢查該文件類型爲好,不僅寬度和高度:

list($width, $height, $type) = getimagesize($filename); 

第三元件,$type,然後是任何這些IMAGETYPE_XXX常數:

Value Constant 
1  IMAGETYPE_GIF 
2  IMAGETYPE_JPEG 
3  IMAGETYPE_PNG 
4  IMAGETYPE_SWF 
5  IMAGETYPE_PSD 
6  IMAGETYPE_BMP 
7  IMAGETYPE_TIFF_II (intel byte order) 
8  IMAGETYPE_TIFF_MM (motorola byte order) 
9  IMAGETYPE_JPC 
10 IMAGETYPE_JP2 
11 IMAGETYPE_JPX 
12 IMAGETYPE_JB2 
13 IMAGETYPE_SWC 
14 IMAGETYPE_IFF 
15 IMAGETYPE_WBMP 
16 IMAGETYPE_XBM 
17 IMAGETYPE_ICO 

exif_imagetype。如果將兩者結合起來,您可以首先檢查類型是否可以爲您加載,然後檢查是否可以加載它。

+0

謝謝您還有什麼!我已經設法從你的偉大答案中解決我的問題!其他人很好,但這正是我需要的:) – 2012-04-12 20:27:34

1

Splfileinfo::getextension.php可能正是你所需要的。

編輯:我誤讀了,你只想檢查一個字符串的擴展名。沒有內置的函數,該函數在PHP中,你可以簡單地使用正則表達式:

$ext = substr(strrchr($fileName,'.'),1); 
1

你可以試試這個

$fileExtention = pathinfo ($filename, PATHINFO_EXTENSION); 

或者

$fileExtention = image_type_to_extension(exif_imagetype($filename)); 

的最後我會建議你使用類似http://phpthumb.sourceforge.net/是比你需要處理圖像