【问题标题】:imagemagick convert: how to tell if images need to be rotated?imagemagick convert:如何判断图像是否需要旋转?
【发布时间】:2017-09-01 09:47:22
【问题描述】:

在我的 rails 应用程序中,我让用户上传图片以用作他们制作的资源的缩略图。我使用 imagemagick 的转换命令进行所有图像处理:我转换为 jpg,将其信箱化为 800x600px,然后制作一些较小的缩略图版本。

这一切都很好。问题是,例如,从我的 iPhone 上取下来的某些图像的方向错误。我的桌面似乎以各种方式处理这个问题:当我在文件选择器对话框中看到图像的小缩略图时,它的方向错误,但如果我在图像查看工具中打开它,它的方向正确。

大概有一些标题或元数据或图像文件中的某些内容告诉应用它需要旋转文件?我认为我需要在对图像进行任何其他处理之前阅读此内容,以便在执行所有其他操作之前旋转图像(如有必要)。

谁能告诉我如何在 Ubuntu 服务器上的 bash 中做到这一点?

谢谢,马克斯

编辑:一些谷歌搜索表明这是与 EXIF 标头...

【问题讨论】:

    标签: bash image rotation imagemagick imagemagick-convert


    【解决方案1】:

    确实,您将不得不寻找读取 Image 的 Exif 元数据的方向值。使用 imagemagick 你可以得到这个值

    identify -format '%[exif:orientation]' <Path to Image> 
    //or by using
    identify -format '%[orientation]' <Path to Image>
    

    Exif 方向值范围从 1 到 8,并映射到方向如下:

    • 1 = 水平(正常)
    • 2 = 水平镜像
    • 3 = 旋转 180
    • 4 = 镜像垂直
    • 5 = 镜像水平并顺时针旋转 270 度
    • 6 = 顺时针旋转 90 度
    • 7 = 镜像水平并顺时针旋转 90
    • 8 = 顺时针旋转 270 度

    因此,如果此元数据标记返回非 1 值,则图像将需要方向校正。如果此标签返回没有值,则可以假定它具有正常方向。

    要将方向纠正为正常,您可以使用以下命令

    convert -auto-orient <inputImagePath> <outputImagePath> 
    

    【讨论】:

    • 啊,我不知道 imagemagick 可以自动完成!这节省了很多麻烦,谢谢:)
    • 实际上%orientation[exif:orientation] 都在Linux 上工作(并且可能在OSX 上)。
    • 是的,两者都适用于 linux,但 [exif:orientation] 似乎不适用于 osx。
    【解决方案2】:

    试试

    identify -format "%f %[EXIF:Orientation]" &lt;imagename&gt;

    这给出了一个从 1 到 8 的数字。这些数字记录在 here

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 2013-10-11
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 2010-11-20
      相关资源
      最近更新 更多