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

PHP 讀取圖片 EXIF 資訊教學

     編輯:PHP 相關知識

PHP 讀取圖片 EXIF 資訊教學

EXIF 包含相機型號、光圈、快門、ISO、GPS 等拍攝參數。PHP 內建 exif_read_data() 可輕鬆解析,適用於相簿、攝影社群等場景。

基本用法

<?php
$file = 'photo.jpg';
$exif = exif_read_data($file, 'IFD0'); // 僅讀取 IFD0 區段

if ($exif === false) {
    echo "無 EXIF 標頭";
} else {
    echo "包含 EXIF 資訊
"; print_r($exif); } // 完整讀取所有區段並以關聯陣列回傳 $exifFull = exif_read_data($file, null, true); foreach ($exifFull as $section => $data) { echo "<h3>$section</h3>"; foreach ($data as $key => $val) { echo "$key: $val
"; } } ?>

常見 EXIF 標籤對照

標籤說明
Make / Model相機廠商 / 型號
DateTimeOriginal原始拍攝時間
ExposureTime快門速度(秒)
FNumber光圈值
ISOSpeedRatingsISO 感光度
FocalLength焦距(mm)
GPSLatitude / GPSLongitudeGPS 座標(度分秒)
Orientation旋轉方向(1=正常,6=順時針90°)

GPS 座標轉換範例

<?php
function getGps($exif) {
    if (!isset($exif['GPSLatitude'], $exif['GPSLongitude'])) return null;
    $lat = convertDMS($exif['GPSLatitude'], $exif['GPSLatitudeRef']);
    $lon = convertDMS($exif['GPSLongitude'], $exif['GPSLongitudeRef']);
    return ['lat' => $lat, 'lon' => $lon];
}

function convertDMS($dms, $ref) {
    // $dms 格式:[deg, min, sec] 皆為分數字串
    $deg = eval("return $dms[0];");
    $min = eval("return $dms[1];");
    $sec = eval("return $dms[2];");
    $decimal = $deg + $min/60 + $sec/3600;
    return ($ref === 'S' || $ref === 'W') ? -$decimal : $decimal;
}
?>

注意事項

  • 需啟用 php_exif.dll / exif.so 擴展,且編譯 PHP 時需加入 --enable-exif
  • 部分圖片(截圖、網圖重壓)可能剝離 EXIF
  • 大量處理時建議先快取解析結果,避免重複 I/O
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved