PHP/PEL如何从exif获取相机镜头?

PHP/PEL如何从exif获取相机镜头?,php,exif,pel,Php,Exif,Pel,我正在尝试使用PHP检索图片中使用的相机镜头 我的第一个move是使用exif_read_数据和以下代码: $image_file = $_FILES['photo']['tmp_name']; $exif = exif_read_data($image_file, 0, true); $lens = $exif["EXIF"]["UndefinedTag:0xA434"]; 在这张图片出现之前,它一直运行良好: 这个图像的exif没有被破坏,因为我可以

我正在尝试使用PHP检索图片中使用的相机镜头

我的第一个move是使用exif_read_数据和以下代码:

$image_file = $_FILES['photo']['tmp_name'];
$exif = exif_read_data($image_file, 0, true);
$lens = $exif["EXIF"]["UndefinedTag:0xA434"];
在这张图片出现之前,它一直运行良好:

这个图像的exif没有被破坏,因为我可以从一个随机的exif查看器站点(比如这个站点:)获取镜头引用

然后我决定用PEL来获取失踪者的exif。以下是我使用PEL的代码:

$jpeg = new PelJpeg($_FILES['photo']['tmp_name']);
$exif = $jpeg->getExif();
$tiff = $exif->getTiff();
$ifd0 = $tiff->getIfd();
$subIFD1 = $ifd0->getSubIfd(2);
$subIFD = $subIFD1->getSubIfd(5);
$entry = $subIFD->getEntry(149);
$lens = $entry->getText();
尽管这段代码在前一张图片上运行良好,但我知道我无法完全控制它。 最令我失望的是,一张新图像打破了之前的两个代码,现在我不知道如何从exif获得合适的镜头型号。 以下是不起作用的图像: 下面是我得到的php错误:

PHP Warning:  exif_read_data(phppTDMme): IFD data bad offset: 0xFFFFFC72 length 0x1DD0 in add.php on line 115
PHP Warning:  Division by zero in php_exif/src/PelCanonMakerNotes.php on line 229
PHP Fatal error:  Uncaught lsolesen\pel\PelMakerNotesMalformedException: Size of Canon Camera Settings does not match the number of entries. in php_exif/src/PelCanonMakerNotes.php:230
Stack trace:
#0 php_exif/src/PelCanonMakerNotes.php(198): lsolesen\pel\PelCanonMakerNotes->parseCameraSettings(Object(lsolesen\pel\PelIfd), Object(lsolesen\pel\PelDataWindow), 2, 0)
#1 php_exif/src/PelIfd.php(406): lsolesen\pel\PelCanonMakerNotes->load()
#2 php_exif/src/PelTiff.php(159): lsolesen\pel\PelIfd->load(Object(lsolesen\pel\PelDataWindow), 10)
#3 php_exif/src/PelExif.php(108): lsolesen\pel\PelTiff->load(Object(lsolesen\pel\PelDataWindow))
#4 php_exif/src/PelJpeg.php(216): lsolesen\pel\PelExif->load(Object(lsolesen\pel\PelDataWindow))
#5 php_exif/src/PelJpeg.php(286): lsolesen\pel\PelJpeg->load(Object(lsolesen\p in php_exif/src/PelCanonMakerNotes.php on line 230
使用php_exif my PEL文件夹和add.php上的第115行:

非常感谢

编辑:

经过一些测试,我可以说错误只是因为这一行:

$jpeg=新的PelJpeg($_文件['photo']['tmp_名称]])

因为此代码适用于除最后一个图像()之外的所有图像:(它给出了上面的错误)

$exif = exif_read_data($image_file, 0, true);
require_once 'autoload.php';

use lsolesen\pel\PelDataWindow;
use lsolesen\pel\PelJpeg;
use lsolesen\pel\PelTiff;

$file = "test.jpg";

$jpeg = new PelJpeg($file);