在我的 Rails 应用程序中,我让用户上传图像以用作他们制作的资源的缩略图。我使用 imagemagick 的转换命令进行所有图像处理:我转换为 jpg,将其信箱化为 800x600px,然后制作一些较小的缩略图版本。
一切正常。问题是,例如,从我的 iPhone 上取下的某些图像方向错误。我的桌面似乎以不同的方式处理这个问题:当我在文件选择器对话框中看到图像的小缩略图时,它的方向是错误的,但如果我在图像查看工具中打开它,它的方向是正确的。
大概有一些 header 或元数据或图像文件中的某些内容告诉应用它需要旋转文件?我认为我需要在对图像进行任何其他处理之前阅读此内容,以便我可以在执行所有其他操作之前旋转图像(如有必要)。
谁能告诉我如何在 Ubuntu 服务器上的 bash 中做到这一点?
谢谢,马克斯
编辑:一些谷歌搜索表明这是为了使用 EXIF header ...
最佳答案
的确,您必须通过读取图像的 Exif 元数据来寻找方向值。使用 imagemagick 你可以通过
identify -format '%[exif:orientation]' <Path to Image>
//or by using
identify -format '%[orientation]' <Path to Image>
Exif Orientation 值范围从 1 到 8,映射到方向如下:
- 1 = 水平(正常)
- 2 = 水平镜像
- 3 = 旋转 180 度
- 4 = 垂直镜像
- 5 = 水平镜像并顺时针旋转 270 度
- 6 = 顺时针旋转 90 度
- 7 = 水平镜像并顺时针旋转 90 度
- 8 = 顺时针旋转 270 度
因此,如果此元数据标签返回非 1 值,图像将需要方向校正。如果此标记没有返回任何值,则可以假定它具有正常方向。
要将方向更正为法线,您可以使用以下命令
convert -auto-orient <inputImagePath> <outputImagePath>
关于bash - imagemagick 转换 : how to tell if images need to be rotated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43253889/