我正在编写一个小脚本,从图像中收集一些 exif 值...即创建日期、品牌和型号。
我注意到(特别是通过默认 iPhone 邮件应用程序邮寄的图像)exif 数据已被更改,这是一个已知问题(邮件应用程序在发送图像之前压缩图像,即使选择了“全尺寸” ).我正在寻找的值似乎在那里,尽管我在访问它们时收到 PHP 警告。实际获取值没有问题,但警告显然对我不起作用。
调用 ini_set('display_errors',0) 会隐藏警告,但对我来说似乎很草率。对于这种稍微好一点的场景,有什么方法可以忽略此脚本上的警告吗?
我最初的想法是将所有内容包装在 try/catch 中,但警告仍然显着显示在页面上。
我只是在使用标准的 exif_read_data() 函数,我认为外部库足以满足我的需求。
PHP:
if($_GET['i']) { $input = strtolower($_GET['i'] . ".jpg"); if(file_exists($input)) { $exif = exif_read_data($input); foreach($exif as $key => $value) { if(!in_array($key, Array("DateTime","Make","Model"))) { unset($exif[$key]); } } ksort($exif); print_r($exif); } }
警告:
警告:exif_read_data(trailmarker.jpg) [exif_read_data]:非法 IFD 大小:x00C4 + 2 + x3239*12 = x25B70 > x2B74 in C:\xampp\htdocs\exif\dumpfolder\exif.php on line 5
最佳答案
您可以使用 @ operator在不使用 display_errors 的情况下隐藏警告,即
$exif = @exif_read_data(..);
这比设置 display_errors
好因为它只会消除 exif 读取函数上的警告/错误,并且不会隐藏代码中其他可能的错误。
关于PHP/(错误的)exif 数据/警告,怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5184748/