2011-09-12 18 views

答えて

4

私はgetimagesizeを推測:

list($width, $height, $type, $attr) = getimagesize("path/to/image.jpg"); 

if (isset($type) && in_array($type, array(
    IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF))) { 
    ... 
} 
+5

ドキュメントを読む:特定のファイルが有効なイメージであることを確認するためにgetimagesize()を使用しないでください。 http://php.net/manual/en/function.getimagesize.php –

-1

私はこの機能を使用して...それはURLをチェックし、あまりにも

function isImage($url){ 
    $params = array('http' => array(
       'method' => 'HEAD' 
      )); 
    $ctx = stream_context_create($params); 
    $fp = @fopen($url, 'rb', false, $ctx); 
    if (!$fp) 
     return false; // Problem with url 

    $meta = stream_get_meta_data($fp); 
    if ($meta === false){ 
     fclose($fp); 
     return false; // Problem reading data from url 
    } 
} 
+0

はい、あなたは正しいです...ブラケットを追加しました。 –

24

exif_imagetypeよりよい解決策です。

このメソッドは、getimagesizeを使用するよりも高速です。 php.net "返り値は、getimagesize()がインデックス2で返す値と同じですが、exif_imagetype()ははるかに高速です。"

function is_image($path) 
{ 
    $a = getimagesize($path); 
    $image_type = $a[2]; 

    if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP))) 
    { 
     return true; 
    } 
    return false; 
} 
+1

もちろん、これはEXIF拡張機能が有効な場合にのみ機能します。私の場合、それは事実ではなく、私はこれを支配しません:( –

-1

PHP documentation

"getimagesize()を使用して、指定されたファイルが有効なイメージであることを確認しないでください。代わりにFileinfo拡張などの目的に合わせたソリューションを使用してください。ここで

は一例です:

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
$type = finfo_file($finfo, "test.jpg"); 

if (isset($type) && in_array($type, array("image/png", "image/jpeg", "image/gif"))) { 
    echo 'This is an image file'; 
} else { 
    echo 'Not an image :('; 
} 
1

exif_imagetypeがgetimagesizeよりもはるかに高速であるとによって推奨されているように(スリムMEMの足跡を残して)

function isImage($pathToFile) 
{ 
    if(false === exif_imagetype($pathToFile)) 
    return FALSE; 

    return TRUE; 
} 
2

をGD-Libのを使用していない:私はこれを使用

if(exif_imagetype('path/to/image.jpg')) { 
    // your image is valid 
} 
関連する問題