getimagesize

(PHP 3, PHP 4, PHP 5)

getimagesize -- 取得圖像大小

說明

array getimagesize ( string filename [, array &imageinfo] )

getimagesize() 函數將測定任何 GIFJPGPNGSWFSWCPSDTIFFBMPIFFJP2JPXJB2JPCXBMWBMP 圖像檔案的大小並返回圖像的尺寸以及檔案類型和一個可以用於普通 HTML 檔案中 <IMG> 旗標中的 height/width 文字字串。

若果不能訪問 filename 特殊的圖像或是其不是有效的圖像,getimagesize() 將返回 FALSE 並產生一條 E_WARNING 級的錯誤。

注: JPCJP2JPXJB2XBMWBMP 的支援自 PHP 4.3.2 起可用。對 SWC 的支援自 PHP 4.3.0 起可用。對 TIFF 的支援是 PHP 4.2.0 增加的。

注: JPEG 2000 支援是 PHP 4.3.2 增加的。注意 JPC 和 JP2 可以有不同的色彩深度的成分。此情況下,「bits」的值是碰到的最高的位深度。此外,JP2 檔案可能包括有多個 JPEG 2000 代碼流,此情況下,getimagesize() 返回此檔案頂層中碰到的第一個代碼流的值。

注: 本函數不需要 GD 圖像庫。

返回一個具有四個單元的陣列。索引 0 包括圖像寬度的像素值,索引 1 包括圖像高度的像素值。索引 2 是圖像類型的旗標:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。這些旗標與 PHP 4.3.0 新加的 IMAGETYPE 常量對應。索引 3 是文字字串,內容為「height="yyy" width="xxx"」,可直接用於 IMG 旗標。

例子 1. getimagesize(檔案)

<?php
list($width$height$type$attr) = getimagesize("img/flag.jpg");
echo 
"<img src=\"img/flag.jpg\" $attr>";
?>

URL 支援是 PHP 4.0.5 增加的。

例子 2. getimagesize(URL)

<?php
$size 
getimagesize("http://www.example.com/gifs/logo.gif");

// if the file name has space in it, encode it properly
$size getimagesize("http://www.example.com/gifs/lo%20go.gif");

?>

對於 JPG 圖像,還會多返回兩個索引:channelsbitschannels 對於 RGB 圖像其值為 3,對於 CMYK 圖像其值為 4。bits 是每種彩色的位數。

自 PHP 4.3.0 起,bitschannels 對於其它圖像類型也存在。但是這些值可能會把人搞糊塗。例如,GIF 總是對每個像素使用 3 個 channel,但是對於動畫 GIF 來說每個像素的位數無法通過全局彩色表計算出來。

某些格式可能不包括圖像或是包括多個圖像。此種情況下,getimagesize() 可能不能用來準確測定圖像的大小。此時 getimagesize() 將返回零作為寬度和高度。

自 PHP 4.3.0 起,getimagesize() 還會返回額外的參數 mime,符合該圖像的 MIME 類型。此訊息可以用來在 HTTP Content-type 頭訊息中傳送正確的訊息:

例子 3. getimagesize() 和 MIME 類型

<?php
$size 
getimagesize($filename);
$fp=fopen($filename"rb");
if (
$size && $fp) {
  
header("Content-type: {$size['mime']}");
  
fpassthru($fp);
  exit;
} else {
  
// error
}
?>

可選的 imageinfo 參數容許從圖像檔案中提取一些增加訊息。目前,這將以一個關聯陣列返回不同的 JPG APP 標識。某些程式用這些 APP 標識來在圖像中內嵌文字訊息。一個非常常見的是 APP13 標識中內嵌的 IPTC http://www.iptc.org/ 訊息。可以用 iptcparse() 函數來將二進位的 APP13 標識解析為可讀的訊息。

例子 4. getimagesize() 返回 IPTC

<?php
$size 
getimagesize("testimg.jpg", &$info);
if (isset(
$info["APP13"])) {
    
$iptc iptcparse($info["APP13"]);
    
var_dump($iptc);
}
?>

參見 image_type_to_mime_type()exif_imagetype()exif_read_data()exif_thumbnail()