【问题标题】:ImageMagick - convert -auto-orient not working correctly, PHPImageMagick - 转换 -auto-orient 无法正常工作,PHP
【发布时间】: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 度,因此显示错误旋转,因为标志错误。一旦我得到确认,我会在这里报告。

标签: php imagemagick-convert


【解决方案1】:

好的,这里有多个“答案”。感谢 fmw42,我很确定图像方向正确,但 EXIF:orientation 值不正确。另外,我发现:

  • -auto-orient 本身没有做任何可见的事情,但设置了 EXIF 值
  • -rotate 旋转图片,但没有设置EXIF值
  • 同时使用两者旋转图像并设置 EXIF 值

我的测试表明它工作正常,所以现在看看当用户掌握它时现实世界中会发生什么。

【讨论】:

    猜你喜欢
    • 2013-09-07
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2020-04-09
    相关资源
    最近更新 更多