getimagesize() 讀取圖片文件頭,返回寬度、高度、類型、屬性字符串、MIME 類型等信息,不載入完整圖片到內存,效率極高。
array(
0 => 寬度,
1 => 高度,
2 => 類型常量 (IMAGETYPE_JPEG 等),
3 => 'width="xxx" height="yyy"', // 可直接用於 <img> 標籤
'bits' => 位深,
'channels' => 通道數 (3=RGB, 4=RGBA),
'mime' => 'image/jpeg' 等
)
<?php
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) {
header("Content-type: {$size['mime']}");
fpassthru($fp);
exit;
} else {
// 錯誤處理
}
?>
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"示例\" />";
$size = getimagesize("https://www.example.com/gifs/logo.gif");
// URL 中特殊字符需編碼
$size = getimagesize("https://www.example.com/gifs/lo%20go.gif");
需啟用 allow_url_fopen,受 max_execution_time、default_socket_timeout 限制。
$size = getimagesize("testimg.jpg", $info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc); // 包含標題、關鍵字、作者、版權等
}
第二個參數以引用方式接收圖片內嵌的 APP 段數據。
| 常量 | 值 | 格式 |
|---|---|---|
| IMAGETYPE_GIF | 1 | GIF |
| IMAGETYPE_JPEG | 2 | JPEG |
| IMAGETYPE_PNG | 3 | PNG |
| IMAGETYPE_SWF | 4 | SWF |
| IMAGETYPE_PSD | 5 | PSD |
| IMAGETYPE_BMP | 6 | BMP |
| IMAGETYPE_TIFF_II | 7 | TIFF (Intel) |
| IMAGETYPE_TIFF_MM | 8 | TIFF (Motorola) |
| IMAGETYPE_JPC | 9 | JPEG 2000 |
| IMAGETYPE_JP2 | 10 | JPEG 2000 |
| IMAGETYPE_JPX | 11 | JPEG 2000 |
| IMAGETYPE_JB2 | 12 | JB2 |
| IMAGETYPE_SWC | 13 | SWC |
| IMAGETYPE_IFF | 14 | IFF |
| IMAGETYPE_WBMP | 15 | WBMP |
| IMAGETYPE_XBM | 16 | XBM |
| IMAGETYPE_ICO | 17 | ICO |
| IMAGETYPE_WEBP | 18 | WebP (PHP 7.1+) |
| IMAGETYPE_BMP | 19 | BMP (PHP 8.0+ 區分) |
Content-Type@ 抑制並檢查返回值IMAGETYPE_WEBP 支援