getimagesize() 內建支援 GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, WBMP 等格式,回傳寬高、型別常數、HTML 屬性字串、位元深度、MIME 型別。
<?php
$info = getimagesize('https://www.google.com.hk/images/srpr/logo4w.png');
print_r($info);
Array
(
[0] => 550 // 寬度
[1] => 190 // 高度
[2] => 3 // 型別常數 (IMAGETYPE_PNG)
[3] => width="550" height="190" // 可直接用於 <img> 標籤
[bits] => 8 // 色彩位元深度
[channels] => 3 // 通道數 (RGB=3, CMYK=4)
[mime] => image/png // MIME 型別
)
| 常數 | 值 | 格式 |
|---|---|---|
IMAGETYPE_GIF | 1 | GIF |
IMAGETYPE_JPEG | 2 | JPG |
IMAGETYPE_PNG | 3 | PNG |
IMAGETYPE_SWF | 13 | Flash |
IMAGETYPE_PSD | 14 | Photoshop |
IMAGETYPE_BMP | 16 | BMP |
IMAGETYPE_WEBP | 18 | WebP (PHP 7.1+) |
function validate_image($tmp_path) {
$info = @getimagesize($tmp_path);
if (!$info) return false;
$allowed = [IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_WEBP];
return in_array($info[2], $allowed);
}
<img src="photo.jpg" alt="">
// 輸出: 
$images = [];
foreach (glob('uploads/*.{jpg,png,gif,webp}', GLOB_BRACE) as $file) {
$info = @getimagesize($file);
if ($info) {
$images[] = [
'path' => $file,
'width' => $info[0],
'height' => $info[1],
'mime' => $info['mime'],
'size' => filesize($file),
];
}
}
$info = @getimagesize('https://example.com/banner.jpg');
if ($info) {
echo "遠端圖片: {$info[0]}x{$info[1]} {$info['mime']}";
}
allow_url_fopen,受網路延遲影響,建議設定 stream_context 超時imagick 擴充false 並觸發 E_WARNING,建議加 @ 抑制並檢查回傳值getimagesize() 是 PHP 處理圖片上傳驗證、尺寸統計、前端標籤產生的「瑞士刀」,零依賴、零配置、效能極佳,必備工具函式。