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

PHP 讀取圖片 EXIF 信息並顯示縮略圖完整實現

     編輯:PHP 相關知識

EXIF 數據解析與縮略圖展示完整代碼

利用 PHP exif_read_data() 函數可完整提取圖片元數據,包含拍攝參數、設備信息、GPS 數據等,並可提取內嵌縮略圖。

核心功能函數

<?php
function GetImageInfo($img) {
    // 類型、方向、測光模式、光源、閃光燈等映射表定義...
    
    $exif = exif_read_data($img, 0, true);
    if ($exif === false) {
        return array("文件信息" => "沒有圖片 EXIF 信息");
    }
    
    $new_img_info = array(
        "文件名"       => $exif['FILE']['FileName'],
        "文件類型"     => $imgtype[$exif['FILE']['FileType']],
        "文件大小"     => $exif['FILE']['FileSize'],
        "拍攝時間"     => $exif['EXIF']['DateTimeOriginal'],
        "光圈值"       => $exif['EXIF']['ApertureValue'],
        "快門速度"     => $exif['EXIF']['ShutterSpeedValue'],
        "ISO感光度"    => $exif['EXIF']['ISOSpeedRatings'],
        "焦距"         => $exif['EXIF']['FocalLength'] . "mm",
        "測光模式"     => GetImageInfoVal($exif['EXIF']['MeteringMode'], $MeteringMode_arr),
        "閃光燈"       => GetImageInfoVal($exif['EXIF']['Flash'], $Flash_arr),
        "白平衡"       => ($exif['EXIF']['WhiteBalance'] == 1 ? "手動" : "自動"),
        "色彩空間"     => ($exif['EXIF']['ColorSpace'] == 1 ? "sRGB" : "Uncalibrated"),
        // ... 更多字段
    );
    
    // 縮略圖處理
    $image = exif_thumbnail($img);
    if ($image !== false) {
        $new_img_info['縮略圖'] = '<img src="thumbnail.php?img=' . $img . '">';
    }
    
    return $new_img_info;
}

關鍵技術點

  1. 多層數據結構:EXIF 數據分為 FILE、IFD0、EXIF、COMPUTED 等區塊
  2. 數值轉換:光圈值需換算(APEX 制),F-number = pow(1.4142, ApertureValue)
  3. 編碼處理:用戶註釋可能包含 ASCII/JIS/Unicode,需解析前 8 字節判斷編碼
  4. 縮略圖提取:exif_thumbnail() 直接返回二進制數據,需單獨腳本輸出

前端展示示例

<?php
$exif = GetImageInfo($_GET['img']);
echo "<table>";
foreach ($exif as $name => $val) {
    echo "<tr><td>$name</td><td>$val</td></tr>";
}
echo "</table>";
?>

需確保 PHP 編譯時啟用 --enable-exif,且圖片必須包含 EXIF 數據(部分截圖/編輯工具會剝離)。

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