我正在开发一个应用程序,用于修复从AWS桶下载的jpeg文件的方向(如果存在)。
Here您可以验证此图片是否有exif轮换部分。
我用
下载图片Dim wb As Workbook, ws1 As Worksheet, ws2 As Worksheet
Dim rng1 As Range, rng2 As Range
Set ws1 = Workbooks("C:\Users\user1\Desktop\" & f_name).Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheets2")
Set rng1 = ws1.Range("A" & i).Offset(chunks - 1, c_cnt - 1)
Set rng2 = ws2.Range("A" & i).Offset(chunks - 1, c_cnt - 1)
ws2.Range("A" & i, rng2).Value = ws1.Range("A" & i, rng1).Value
在我尝试通过Gregwar Image library确定方向后。
file_put_contents('/local/path/to/file', file_get_contents('/path/to/url/image'));
我尝试了几张图片,但我总是收到消息
Image::open($path)->fixOrientation()->save($dest, $type, $quality);
我认为这是一个与我如何检索图像有关的问题,但我也尝试使用cUrl和fopen获得相同的结果。
有人有一些建议吗?
答案 0 :(得分:4)
PHP 5.6.2x存在其EXIF功能的错误(有关详细信息,请参阅错误#72914以及#72819)。尝试读取EXIF数据将导致所述错误之一(非法IFD大小,IFD错误数据,其他)。
目前(2016-11-21)5.6分支没有可用的修复方法。第7分支正在进行一些测试。
通过测试抛出IFD错误的函数来实现本地修复,并在确认时假设EXIF在脚本持续时间内不可用。
(如果您愿意,可以将其修补到加载程序中,并'重载'函数以返回默认值false / 0 / null而不是表示破坏)
答案 1 :(得分:2)
您可以先使用“@”忽略警告:.//w:tbl
很多人都在互联网上抱怨这一点。可能有一些错误的exif数据。如果您的操作按照您想要的方式工作,只需记录并继续。
答案 2 :(得分:1)
我还使用exif_get_data遇到了这个问题。我可以在我的本地主机(PHP v5.4.15)上处理图像,但在我的网站主机(PHP v5.6.22)上可以处理错误的非法IFD大小&#39;即使我试过&#34; @&#34;忽略警告方法。 我发现在Web主机上(无论是因为版本或安装不同),exif_get_data实际上是抛出异常而不是发出警告。我使用exif数据重新定位图片,如果它被旋转了,所以如果exif数据有问题或不存在我只是忽略它并且什么也不做,这里是代码片段:< / p>
try {
$exif = exif_read_data($filePath);
}
catch (Exception $exp) {
$exif = false;
}
if ($exif){
...
}
答案 3 :(得分:0)
在生产环境中,最好的办法仍然是隐藏警告!
所以我将他的错误报告更改为ERRORS,仅在脚本开始时使用以下行:
vstest.console /listdiscoverers
答案 4 :(得分:-1)
您可以使用if not request.session.session_key:
request.session.save()
session_id = request.session.session_key
set_error_handler