【发布时间】:2020-01-06 16:54:03
【问题描述】:
我遇到了 -auto-orient 无法正常工作的问题 - 特别是 iPhone 图片,但可能是其他图片。我目前正在与上传图片的客户合作,我们对其进行处理并将其存储在我们的云存储中。
使用 PHP exif_read_data 命令,我看到(删除多余的东西):
[FileSize] => 43228
[FileType] => 2
[MimeType] => image/jpeg
[Make] => Apple
[Model] => iPhone 7 Plus
[Orientation] => 6
[ExifVersion] => 0221
然后我使用 Imagick 检查图像方向:
$testimage = new IMagick();
$testimage->readImage($original_file);
$image_orientation = $testimage->getImageOrientation();
print "Orientation: $image_orientation\n";
这会导致: 方向:6
然后我调整大小,并在图像上使用自动定向(使用 PHP exec() ):
/usr/bin/convert -auto-orient /tmp/phpi1E33B -resize 640x480 /tmp/AR7020014-1567534336-lp_01_original_1567534336.jpg
并检查结果的方向:
$testimage->readImage($new_output_filename);
$image_orientation = $testimage->getImageOrientation();
print "After convert, orientation\n";
结果: 转换后,方向:1
但问题是当我查看文件时图像仍然是横向的。所以自动定向正在翻转 IMagick::getImageOrientation 看到的任何值,但似乎并没有真正改变图像?
注意:我在命令行本地运行转换,并得到相同的结果。
我服务器上的 ImageMagick 版本是: 转换--版本 版本:ImageMagick 6.8.9-9 Q16 x86_64 2015-01-05 http://www.imagemagick.org 版权所有:版权所有 (C) 1999-2014 ImageMagick Studio LLC 特点:DPC 模块 OpenMP 代表: bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlib
本地版本为: 转换--版本 版本:ImageMagick 6.9.9-40 Q16 x86_64 2019-08-30 http://www.imagemagick.org 版权所有:© 1999-2018 ImageMagick Studio LLC 许可证:http://www.imagemagick.org/script/license.php 特点:密码 DPC 模块 代表(内置): bzlib djvu fftw fontconfig freetype gslib jbig jng jp2 jpeg lcms ltdl lzma openexr png ps raw tiff webp x xml zlib
注意:如果我计算一个特定的方向值(即'-rotate -90'),并使用 -auto-orient,它似乎可以正常工作。
【问题讨论】:
-
这是回忆。认为我们发现 EXIF 方向数据是无用的,并开始剥离所有这些。这可能值得一读:daveperrett.com/articles/2012/07/28/…
-
发布示例图片。请注意,某些查看器不使用自动定向标志,因此会显示错误的图像。
-
嗯..“一些观众”似乎包括 Facebook。这就是问题出现的原因——从我们客户的网站到 FB 的分享让她的房子颠倒了,尽管在我们的网站上看起来很好。我使用了“自动定向 + 显式定向”选项,它似乎适用于我的测试用例。
-
不确定如何发布示例图片,但这里有一个链接:storage.cloud.google.com/idx-photos-gs.ihouseprd.com/MI-LANSING/…
-
我得到了你的图片并找到了相同的结果。我已经在 ImageMagick 网站上报告了这一点。但是,我怀疑您的图像拍摄的方向正确,但标记了错误的方向标志。因此,它由标志自动定向 180 度,因此显示错误旋转,因为标志错误。一旦我得到确认,我会在这里报告。