利用 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;
}
F-number = pow(1.4142, ApertureValue)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 數據(部分截圖/編輯工具會剝離)。