2017-04-06 24 views
2

私のレールアプリでは、ユーザーが作成したリソースのサムネイルとして使用する画像をアップロードできます。私はimagemagickのconvertコマンドですべての画像処理を行います:私はjpgに変換し、それを800x600pxにレターボックス化し、それからいくつかのより小さなサムネイル版を作成します。imagemagick convert:画像を回転する必要があるかどうかを確認する方法?

これはすべて問題なく動作しています。問題は、たとえば、iPhoneから外れた画像の向きが間違っていることです。私のデスクトップは、これをさまざまに扱っているようです:ファイル選択ダイアログで画像のサムネイルが小さく見える場合は、向きが間違っていますが、画像表示ツールで開くと正しい向きになります。

おそらく、画像ファイルに、ファイルをローテーションする必要があることをアプリに伝えるヘッダやメタデータなどがありますか?画像の他の処理を行う前にこれを読む必要があると思いますので、必要に応じて画像を回転して他のすべての処理を行うことができます。

誰でも私がこれを行う方法を教えてもらえますか?Ubuntuサーバーのbashで?

おかげで、最大

EDIT:グーグルのビットが、これは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には、自動的にそれを行うことを知りませんでした!それは多くの愚か者、おかげで節約します:) –

+0

実際には '%orientation'と' [exif:orientation] 'は両方ともLinux上で(そしておそらくOSX上でも)動作します。 – xenoid

+0

はい、両方ともlinuxでは動作しますが、[exif:orientation]はosxでは動作しません。 – t6nand

3

これは1からに番号を与え

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

をお試しください8.これらの数値は文書化されていますhere

関連する問題