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

PHP 圖片類型與擴展名獲取:image_type_to_mime_type、getimagesize、image_type_to_extension 實戰

     編輯:PHP 相關知識

PHP 圖片類型與擴展名獲取實戰

動態處理圖片時,需準確識別類型、MIME、擴展名以正確輸出 Header 與選擇 GD 創建函數。本文匯總核心函數與組合模式。

核心函數速查

函數用途示例
image_type_to_mime_type(IMAGETYPE_PNG)常量 → MIMEimage/png
getimagesize($file)文件 → [寬, 高, 類型常量, 屬性字符串, MIME][800,600,2,'width=800 height=600','image/jpeg']
image_type_to_extension($type, $include_dot=true)類型常量 → 擴展名.jpg
exif_imagetype($file)快速獲取類型常量(不解析全圖)IMAGETYPE_JPEG (2)

實戰組合模式:通用圖片輸出器

function outputImage($filename) {
    $size = getimagesize($filename);
    if (!$size) { header("HTTP/1.0 404 Not Found"); exit; }

    // 直接輸出原文件(最高效)
    header("Content-Type: {$size['mime']}");
    header("Content-Length: " . filesize($filename));
    readfile($filename);
    exit;
}

// 若需處理後再輸出(如加水印)
function processAndOutput($filename) {
    $size = getimagesize($filename);
    $mime = $size['mime']; // image/jpeg, image/png, image/gif
    $type = $size[2];      // IMAGETYPE_* 常量

    // 動態選擇創建函數
    $createFunc = 'imagecreatefrom' . image_type_to_extension($type, false); // imagecreatefromjpeg
    $src = $createFunc($filename);

    // ... 圖片處理邏輯 ...

    // 動態選擇輸出函數
    $outputFunc = 'image' . image_type_to_extension($type, false); // imagejpeg
    header("Content-Type: $mime");
    $outputFunc($src); // 或 $outputFunc($src, null, 90) 調質量
    imagedestroy($src);
}

常見陷阱

  • image_type_to_extension 需 PHP 5.2+,參數 true 返回帶點擴展名(.jpg),false 返回無點(jpg)。
  • 僅靠文件擴展名判斷類型極不靠譜,必須用 getimagesize 或 exif_imagetype 讀取文件頭魔數。
  • 輸出前務必發送正確 Content-Type,否則瀏覽器可能誤判或下載而非顯示。

掌握「文件頭識別 → 常量映射 → 動態調用創建/輸出函數」模式,實現格式無關的圖片處理管線。

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