JPEG画像のロスレス(無劣化)回転
JPEG画像のロスレス(無劣化)回転について、テストしたことを簡単にまとめておきます。
デジカメで縦位置撮影してExifに縦位置情報が含まれている画像の回転についてテストしました。
コマンドベースで実行できる「azure_cui」、「NConvert(XnViewのコマンドラインイメージコンバータ)」、「IrfanView+IrFanView Graphic Viewer PlugIns」でテストしました。
● 元画像
Windowsエクスプローラでは左回転した横位置状態で表示される。
Exif対応画像ビューワでは、縦位置で表示される。
● azure_cui (Ver.1.15)
azure_cui -r -e -c -w src.jpg out.jpg
→回転結果:Windowsエクスプローラでは縦位置表示されるが、Exif対応画像ビューワでは右回転した横位置状態で表示される。
● NConvert (v5.54 / XnView v1.97)
NConvert -jpegtrans rot90 -rmeta -o out.jpg src.jpg
→回転結果:Windowsエクスプローラでも、Exif対応画像ビューワでも、右回転した横位置状態で表示される。
● IrfanView (Ver.4.25)
i_view32 src.jpg /jpg_rotate=(3,1,0,1,0,0,0,0) /convert=
→回転結果:Windowsエクスプローラでも、Exif対応画像ビューワでも、縦位置状態で表示される。
ただし、Windowsエクスプローラのサムネイル画像は左回転した横位置状態で表示される。別フォルダにコピーすると、サムネイル画像も縦位置表示になります。
【2009/12/26追記】
i_view32 src.jpg /jpg_rotate=(6,1,0,1,0,0,0,0) /convert=
にすれば、左右関係なくEXIF情報に基づいて回転補正してくれます。
http://ok2nd.blog87.fc2.com/blog-entry-176.html
azure_cuiと、IrfanViewは、更新日付を保存できます。
ファイルサイズが6MB程度の画像の回転処理で、azure_cuiは数秒、NConvertは1秒程度、IrfanViewは瞬時(?)で処理されます。
IrfanViewでは、元ファイルをそのまま上書きします。/convert=でファイル名を指定しても、そこに書かれる画像データは圧縮されたものになってしまいます。
/convert=の引数自体を省略するとIrfanViewのウインドウが開いてしまいます。