我正在开发一个应用程序,我在其中修改从AWS桶下载的jpeg文件的方向(如果存在)。

在这里,您可以验证此图像是否具有exif旋转部分。

我下载图像

file_put_contents('/local/path/to/file', file_get_contents('/path/to/url/image'));

在我尝试通过Gregwar Image库修复方向之后。

Image::open($path)->fixOrientation()->save($dest, $type, $quality);

我尝试了几个图像,我总是收到消息

Warning: exif_read_data('/local/path/to/file'): Illegal IFD size

我认为这是一个与我如何检索图像有关的问题,但我也尝试使用cUrl和fopen获得相同的结果。

有人有一些建议吗?

===============>>#1 票数:4

PHP 5.6.2x具有其EXIF功能的错误(有关详细信息,请参阅错误#72914以及#72819 )。 尝试读取EXIF数据将导致所述错误之一(非法IFD大小,IFD错误数据,其他)。

目前(2016-11-21)没有针对5.6分支的修复方案。 第7分支正在进行一些测试。

通过测试抛出IFD错误的函数来实现本地修复,并在确认时假设EXIF在脚本持续时间内不可用。

(如果您愿意,可以将其修补到加载程序中,并'重载'函数以返回默认值false / 0 / null而不是表示破坏)

===============>>#2 票数:3

您可以使用“@”忽略警告: @Image::open($path)->fixOrientation()->save($dest, $type, $quality);

这是很多人通过互联网抱怨这一点。 可能有一些错误的exif数据。 如果您的操作按照您想要的方式工作,只需记录并继续操作即可。

===============>>#3 票数:1

我也使用exif_get_data遇到了这个问题。 我可以在我的本地主机(PHP v5.4.15)上处理图像,但在我的网站主机(PHP v5.6.22)上错误“非法IFD大小”,即使我尝试了“@”忽略警告方法。 我发现在Web主机上(无论是因为版本或安装不同),exif_get_data实际上是抛出异常而不是发出警告。 我正在使用exif数据重新定位图片,如果它被旋转,所以如果exif数据有问题或不存在我只是忽略它并且什么也不做,这里是代码片段:

     try {
        $exif = exif_read_data($filePath);
     }
     catch (Exception $exp) {
        $exif = false;
     }
     if ($exif){
        ...
     }

===============>>#4 票数:0

生产环境中 ,最好还是隐藏警告!

所以我在脚本的开头只更改了错误报告给ERRORS:

error_reporting(E_ERROR);

===============>>#5 票数:-1

你可以用set_error_handler捕获错误

set_error_handler(function() {
  throw new Exception();
 }, E_WARNING);

  try{
     $exifData = exif_read_data($filePath);
  } catch (Exception $e) {
     $exifData = false;
  } finally {
     restore_error_handler();
  }

  if(!$exifData) {
     // do something
  }

  ask by stuzzo translate from so

未解决问题?本站智能推荐:

1回复

exif_read_data()函数不从图像中提取任何gps信息

我使用函数exif_read_data来提取表单jpg gps信息,这对所有图像都有效。 但是,我的客户有一个三星平板电脑和所有用这个完成的照片,我不能得到任何GPS信息。 例如在windows照片中我可以看到照片确实有gps信息。 为什么? 还有其他人有过这个问题吗? 照片在这里ht
4回复

在php中编写exif数据

我正在尝试创建一个网站,我可以在其中添加和修改JPEG文件中的元数据。 有没有办法可以用相当简单的方式编写exif数据。 我已经看过一两个例子,但它们太复杂了,无法在我给出的时间范围内掌握。 我知道IPTC,我知道元数据可以添加到JPEG文件中。 但这样做的正确方法是什么?
2回复

使用PHP设置EXIF数据

我正在尝试使用https://github.com/lsolesen/pel库覆盖/保存JPEG文件的EXIF数据。 这是必须保存新的EXIF数据的代码: 这是测试照片 这是示例标签: icon, vector, background 但是我得到的文件没有保存任何标签
1回复

用PHP编写exif和itpc数据

我正在尝试制作一个图像上传系统,以将元数据添加到文件本身。 我正在使用GD库中的iptcembed,如下所示: 但是,当我附加一个表单并将$path更改为上载图像的路径,并将iptc数组标签更改为数据表单中的变量表单文本字段时,它不会添加信息。 图像将被上传,但是没有用于作者
1回复

使用PHP删除GPS EXIF数据

今天早上,一个运行Concrete5网站的客户打来的电话让我惊醒,他说上传到他们网站的任何图像突然停止工作。 经过一两个小时的实验和研究,我意识到了问题的根本原因。 几天前,该客户购买了一部新手机(三星Epic),可将GPS EXIF数据记录到每张图像上。 她使用这款手机作为相机,并且由于
1回复

使用EXIF Data PHP时无法复制JPG

我已经花了大约4个小时了。 我已经尝试了好几件事,我将在问题后解释。 我有所有来自有关JPG的EXIF数据(在下面列出) 我想做的是将JPG重新保存到另一个具有新名称的文件夹中。 去除“ GCM_TAG”后,该新名称应为$ data [“ EXIF”] [“ UserCommen
1回复

使用PHP从CRW(或其他RAW文件)中读取EXIF / MetaData

就像标题所说的一样,我进行了搜索,但是找不到任何东西。 我可以读取TIFF和JPEG文件,但找不到任何可读取RAW文件的文件。 有谁知道任何PHP或其他可以做到的事情(如果没有,那么我可以在PHP中使用)。
1回复

在移动设备上使用PHP上传图片时剥离GPS标题?

我有一个脚本将照片上传到用PHP编写的网站。 当我在我的iPhone上使用Safari上传图片时,当我检查exif数据时,某些标题似乎被剥离了。 当我从我的IPhone拍摄完全相同的照片并通过电子邮件发送给自己并从计算机上传时,所有exif数据都在那里。 我想知道我错过了iPhone或
2回复

JPG文件大小优化 - PHP,ImageMagick和Google的页面速度

我有照片库代码,可以进行图像重新调整大小和创建缩略图。 我使用ImageMagick来做到这一点。 我通过Google的Page Speed工具运行了一个图库页面,它显示重新调整大小的图像和缩略图都有大约10KB的数据(特别是JPEG文件)。 我可以在脚本中添加什么来优化文件大小?
2回复

PHP imagecreatefromjpeg保持方向

我一直在我的图片上传网站上工作。 我正在尝试从iPhone拍摄照片并将其上传到Web服务器。 我的文件上传正常,但是我遇到的问题是我所有图像向左旋转90度。 我的图片上传过程 创建一个新图像并将其上传到我的Web目录。 我创建了一个新图像以删除所有EXIF数据(GPS位置