GD與圖檔
判斷是否為圖檔
exif_imagetype( 路徑 );
回傳
| 值 | 常量 | 
|---|---|
| 1 | IMAGETYPE_GIF | 
| 2 | IMAGETYPE_JPEG | 
| 3 | IMAGETYPE_PNG | 
| 4 | IMAGETYPE_SWF | 
| 5 | IMAGETYPE_PSD | 
| 6 | IMAGETYPE_BMP | 
| 7 | IMAGETYPE_TIFF_II | 
| 8 | IMAGETYPE_TIFF_MM | 
| 9 | IMAGETYPE_JPC | 
| 10 | IMAGETYPE_JP2 | 
| 11 | IMAGETYPE_JPX | 
| 12 | IMAGETYPE_JB2 | 
| 13 | IMAGETYPE_SWC | 
| 14 | IMAGETYPE_IFF | 
| 15 | IMAGETYPE_WBMP | 
| 16 | IMAGETYPE_XBM | 
| false | 不是圖檔 | 
快速取得圖片長寬
本地端的圖檔或已經上傳的用 getimagesize
list( $w, $h, $type, $text) = getimagesize($filepath); 
簡單好用又快速。
 // $type 回傳數字 代表圖檔類型 , 但.. 參考就好哈哈
 (0=>'UNKNOWN', 1=>'GIF', 2=>'JPEG', 3=>'PNG', 4=>'SWF', 5=>'PSD', 6=>'BMP',
 7=>'TIFF_II', 8=>'TIFF_MM', 9=>'JPC', 10=>'JP2', 11=>'JPX', 12=>'JB2',
 13=>'SWC', 14=>'IFF', 15=>'WBMP', 16=>'XBM', 17=>'ICO', 18=>'COUNT');
 // $text 回傳文字
 height="yyy" width="xxx"
不過可以的話不想下載完整份檔案才判斷,太慢了。
以下是省時版
$filepath=$_FILES['fileToUpload']['tmp_name'];  // 本地端 這個已經上傳到本地了
$url = "http://i.imgur.com/enarCUc.jpg"; // 網路上 這個還要下載檔案
echo '<br>';
//================重點===============
function ranger($url){
    $headers = array(
    "Range: bytes=0-32768" //只抓前面一點 
    );
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}
$raw = ranger($url);
//==================================
$start = microtime(true); // 計時開始
// $im=imagecreatefromjpeg($filepath); // 本地端 (慢)
$im = imagecreatefromstring($raw);
$width = imagesx($im);
$height = imagesy($im);
$stop = round(microtime(true) - $start, 5); // 停
echo $width," x ",$height," (", $stop ,"s) ";
//==================================
$start = microtime(true); // 計時開始
list( $w, $h) = getimagesize($url); // 本地端 $filepath 時反而快。
$stop = round(microtime(true) - $start, 5); // 停
echo $w," x ",$h," (", $stop , "s) ";
結果輸出:
2448 x 3264 (0.07269s) 2448 x 3264 (2.01425s)