首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP getimagesize() 一鍵取得圖片/Flash 尺寸與 MIME 型別

     編輯:PHP 相關知識

函式能力總覽

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_GIF1GIF
IMAGETYPE_JPEG2JPG
IMAGETYPE_PNG3PNG
IMAGETYPE_SWF13Flash
IMAGETYPE_PSD14Photoshop
IMAGETYPE_BMP16BMP
IMAGETYPE_WEBP18WebP (PHP 7.1+)

進階應用範例

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);
}

2. 直接輸出 <img> 完整標籤

<img  src="photo.jpg" alt="">
// 輸出: 

3. 批次掃描目錄建立圖片索引

$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),
        ];
    }
}

4. 遠端 URL 直接分析 (PHP 4.0.5+)

$info = @getimagesize('https://example.com/banner.jpg');
if ($info) {
    echo "遠端圖片: {$info[0]}x{$info[1]} {$info['mime']}";
}

效能與限制提醒

  • 只讀檔案頭部:不載入完整檔案到記憶體,大檔也極快
  • 遠端 URL:需開啟 allow_url_fopen,受網路延遲影響,建議設定 stream_context 超時
  • 動畫格式:GIF/WebP 動畫僅回傳第一幀尺寸
  • SVG 不支援:需自行解析 XML 或使用 imagick 擴充
  • 錯誤處理:失敗回傳 false 並觸發 E_WARNING,建議加 @ 抑制並檢查回傳值

getimagesize() 是 PHP 處理圖片上傳驗證、尺寸統計、前端標籤產生的「瑞士刀」,零依賴、零配置、效能極佳,必備工具函式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved