PHP EXIF 数据不显示

Posted

技术标签:

【中文标题】PHP EXIF 数据不显示【英文标题】:PHP EXIF data not displaying 【发布时间】:2012-06-14 21:44:42 【问题描述】:

我一直试图从一张照片中显示一些基本的 EXIF 数据,但没有成功。我的代码如下。我只需要显示一些基本信息。我在服务器上启用了 EXIF,并且我知道该图像中有 EXIF 数据 - 但此设置没有显示任何数据。谁能告诉我我在这里做错了什么?

$exif_data = exif_read_data("http://www.findexif.com/client/samples/swiss_house.jpg");

        $emake = $exif_data['Make'];
        $emodel = $exif_data['Model'];
        $eexposuretime = $exif_data['ExposureTime'];
        $efnumber = $exif_data['FNumber'];
        $eiso = $exif_data['ISOSpeedRatings'];
        $edate = $exif_data['DateTime'];

    echo "Make: ". $emake . "<br>";
        echo "Model: ". $emodel . "<br>";
        echo "Exp: ". $eexposuretime . "<br>";
        echo "Date: ". $edate . "<br>";
        echo "ISO: ". $eiso . "<br>";

【问题讨论】:

【参考方案1】:

exif_read_data 的文件名不能是 URL。

如果还想读取外部图片的EXIF数据,需要先下载:

<?php
$imageURL = 'http://www.findexif.com/client/samples/swiss_house.jpg';
$localURL = '/tmp/swiss_house.jpeg';

// Use 'copy' function if you have PHP5
//  and the HTTP stream wrapper enabled on your server.
copy($imageURL, $localURL);

/**
 * This way if you don't have PHP5
$fp = fopen($localURL, 'w');
fwrite($fp, file_get_contents($imageURL));
fclose($fp);
 */

$exif_data = exif_read_data($localURL);

$emake = $exif_data['Make'];
$emodel = $exif_data['Model'];
$eexposuretime = $exif_data['ExposureTime'];
$efnumber = $exif_data['FNumber'];
$eiso = $exif_data['ISOSpeedRatings'];
$edate = $exif_data['DateTime'];

echo 'Make: '. $emake . '<br>';
echo 'Model: '. $emodel . '<br>';
echo 'Exp: '. $eexposuretime . '<br>';
echo 'Date: '. $edate . '<br>';
echo 'ISO: '. $eiso . '<br>';

【讨论】:

我试过 $imagePath = "findexif.com/client/samples/swiss_house.jpg"; $exif_data = exif_read_data($imagePath);也没有运气。能具体一点吗? @xtiaan 也就是说你不能读取外部服务器的EXIF数据,所以需要先下载。

以上是关于PHP EXIF 数据不显示的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 图片 EXIF 方向问题

如何找到松下EXIF中设置的时区

如何从 ALAsset 获取 exif 信息?

Android EXIF数据总是0,怎么改?

网页中图片显示方向与实际图片方向不一致

从安卓相机中提取EXIF数据