2017-04-06 93 views
2

在我的Rails應用程序中,我讓用戶上傳圖片以用作他們製作資源的縮略圖。我使用imagemagick的convert命令完成所有圖像處理:我轉換爲jpg,將它的letterbox轉換爲800x600px,然後製作一些較小的縮略圖版本。imagemagick轉換:如何判斷圖像是否需要旋轉?

這一切工作正常。問題是,例如,我的iPhone上出現的一些圖像的方向錯誤。我的桌面似乎有不同的處理方式:當我在文件選擇器對話框中看到圖像的縮略圖時,它的方向錯誤,但是如果我在圖像查看工具中打開它,它會得到正確的方向。

大概有一些標題或元數據或圖像文件中告訴應用程序需要旋轉文件的東西?我認爲我需要在對圖像進行任何其他處理之前閱讀此內容,以便在執行所有其他操作之前旋轉圖像(如有必要)。

任何人都可以告訴我如何在Ubuntu服務器上執行此操作嗎?

感謝,最大

編輯:有點谷歌搜索表明,這是與EXIF頭向...

回答

2

確實,您將不得不尋找方向值讀數E Image的xif元數據。使用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 CW
  • 6 =旋轉90 CW
  • 7 =鏡子水平和旋轉90 CW
  • 8 =旋轉270 CW

因此,圖像會如果該元數據標籤與非1倍的值返回需要定向修正。如果這個標籤返回沒有值,它可以被認爲是正常的方向。

到正確的方向正常,你可以使用下面的命令

convert -auto-orient <inputImagePath> <outputImagePath> 
+0

啊,我不知道ImageMagick的可以自動做到這一點!這節省了很多faff,謝謝:) –

+0

其實'%orientation'和'[exif:orientation]'在Linux上(可能在OSX上)都可以工作。 – xenoid

+0

是的,兩者都可以在linux上工作,但[exif:orientation]在osx上似乎不起作用。 – t6nand

3

嘗試

identify -format "%f %[EXIF:Orientation]" <imagename>

這給出了一個從1數到8.這些數字有記錄here