You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP获取图片EXIF/元数据中的创建或编辑软件名称

如何通过PHP获取图片元数据中的创建/编辑软件名称?

我尝试用PHP的exif_read_data()函数获取JPG、PNG、TIF格式图片的创建或编辑软件名称,服务器已安装PHP EXIF扩展和ImageMagick,但当前代码仅能获取基础EXIF元数据,无法拿到软件名称。

我的代码:

$fimage = 'fig1-rvs.jpg';
$exif = exif_read_data($fimage, 0, true);
foreach ($exif as $key => $section){
    foreach ($section as $name => $val){
        $valm = $val;
        if ($name == "FileDateTime"){ $valm = date("Y-m-d H:i:s", $val); }
        if ($name == "FileSize"){ $valm = myfilesize($val); }
        if ($name == "FileType"){ $valm = $imgtyp[$val]; }
        if ($name == "BitsPerSample"){
            $valm = "";
            foreach ($val as $keybps => $sectionbps){
                $valm .= $keybps.": ".$sectionbps."<br>";
            }
        }
        echo "[".$key."] ".$name.": ".$valm."<br>";
    }
}

运行结果:

[FILE] FileName: fig1-rvs.jpg
[FILE] FileDateTime: 2023-04-13 09:26:25
[FILE] FileSize: 4.55M
[FILE] FileType: JPEG
[FILE] MimeType: image/jpeg
[FILE] SectionsFound: 
[COMPUTED] html: width="3120" height="3120"
[COMPUTED] Height: 3120
[COMPUTED] Width: 3120
[COMPUTED] IsColor: 1

解决方案

1. 优化exif_read_data参数读取更多字段

exif_read_data的第二个参数默认可能未包含存储软件信息的IFD0段,可指定读取该段或所有段:

$fimage = 'fig1-rvs.jpg';
// 指定读取IFD0段,或用'ALL'读取所有可用段
$exif = exif_read_data($fimage, 'IFD0', true);
// 检查Software字段
if (isset($exif['IFD0']['Software'])) {
    echo "编辑软件:" . $exif['IFD0']['Software'];
}
// 也可检查EXIF段的相关字段
if (isset($exif['EXIF']['Software'])) {
    echo "编辑软件:" . $exif['EXIF']['Software'];
}

2. 使用Imagick扩展读取更全面的元数据

部分图片的软件信息存储在XMP、IPTC等exif_read_data无法直接读取的区块中,此时可借助Imagick扩展:

$image = new Imagick('fig1-rvs.jpg');
// 获取所有图片属性,包含各类元数据
$allProperties = $image->getImageProperties();
foreach ($allProperties as $key => $value) {
    echo "{$key}: {$value}<br>";
}

// 直接获取常见的软件相关字段
$software = $image->getImageProperty('Software');
$creatorTool = $image->getImageProperty('CreatorTool'); // XMP中的创建工具字段

if ($software) echo "编辑软件:{$software}<br>";
if ($creatorTool) echo "创建工具:{$creatorTool}<br>";

3. 不同格式的注意事项

  • JPG:软件信息通常存于IFD0段的Software字段
  • PNG:EXIF支持有限,软件信息可能在tEXt块或XMP中,Imagick读取更可靠
  • TIF:和JPG类似,IFD0或EXIF段的Software字段大概率包含目标信息

内容的提问来源于stack exchange,提问作者eJM Help

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:24:54