2011-09-12 5 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

나는이 기능을 사용하기는 ... 너무

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이 더 나은 솔루션 URL을 확인합니다.

이 방법은 getimagesize를 사용하는 것보다 빠릅니다. php.net "반환 값은 인덱스 2에서 getimagesize()가 반환하는 값과 같지만 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()를 사용하지 마십시오. 사용하는 ap 파일 인포 (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보다 훨씬 빠릅니다과 추천으로

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

    return TRUE; 
} 
2

(야윈 MEM 발자국을 떠나) GD-lib 디렉토리를 사용하지 않습니다

if(exif_imagetype('path/to/image.jpg')) { 
    // your image is valid 
} 
관련 문제