2012-04-12 11 views
2

私は、自分のPCに保存してから自分のサーバーにアップロードするのではなく、外部のURLから画像として設定することができる機能を自分のサイトに追加しようとしています。画像ファイルの種類を確認する

これは私がこれまでに作ってみたものです:

  $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のcompatiblity用:

$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

ありがとう操作するのに必要なもの以上のものを持っています!私はあなたの偉大な答えから私の問題を解決することができました!他の人には良いことでしたが、これはまさに私が必要としていたものです:) –

1

Splfileinfo::getextension.phpが必要な場合もあります。

編集:私は間違っている、あなたは文字列の拡張子をチェックしたい。 PHPでそのための組み込みのない機能があり、あなたは単純に正規表現を使用することができます。

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

あなたは最終的に私はあなたがhttp://phpthumb.sourceforge.net/ようなものを使用アドバイスでしょう。この

$fileExtention = pathinfo ($filename, PATHINFO_EXTENSION); 

それとも

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

のを試すことができますが、画像

関連する問題