2012-09-13 94 views
0

是否有可能適應此功能,因此它也適用於本地文件路徑?數組包含以下內容: 數組([wrapper_type] => plainfile [stream_type] => STDIO [mode] => rb [unread_bytes] => \ imgs \ 232434.jpg [timed_out] => [blocked] => 1 [eof] =>)

$ meta [「wrapper_data」]不存在。

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 
    } 

    $wrapper_data = $meta["wrapper_data"]; 
    if(is_array($wrapper_data)){ 
     foreach(array_keys($wrapper_data) as $hh){ 
      if (substr($wrapper_data[$hh], 0, 19) == "Content-Type: image") // strlen("Content-Type: image") == 19 
      { 
      fclose($fp); 
      return true; 
      } 
     } 
    } 

    fclose($fp); 
    return false; 
    } 

回答

3

如果使用getimagesize來檢測,如果本地/ URL文件是圖像還是不是,它是最好的。

失敗時返回FALSE。 這可能是你在找什麼。

+1

@minimihi:建議使用「exif_imagetype」而不是「getimagesize」。 我無法檢查他的編輯,但您可以使用exif_imagetype來代替,它應該更快 – confiq

+0

實際上我正在尋找精確檢測。我真的不在乎速度,因爲我的服務器總是有幾百毫秒。 – canolucas

+1

然後你可以接受答案! – confiq

相關問題