13 February 2010

(Linux)JPEG画像の無劣化(Loss-Less)回転

WindowsではViXを使ってJPEG画像の無劣化回転処理を行ってきたが、Linuxではどのプログラムを使えばよいのだろうか…

■ convert コマンド

# ls -la test.jpg -rw-r--r-- 1 vm vm 938385 2010-02-13 21:51 test.jpg #convert -rotate 90 test.jpg test.jpg #convert -rotate 90 test.jpg test.jpg #convert -rotate 90 test.jpg test.jpg #convert -rotate 90 test.jpg test.jpg # ls -la test.jpg -rw-r--r-- 1 vm vm 1154282 2010-02-13 21:52 test.jpg #convert -rotate 90 test.jpg test.jpg #convert -rotate 90 test.jpg test.jpg #convert -rotate 90 test.jpg test.jpg #convert -rotate 90 test.jpg test.jpg # ls -la test.jpg -rw-r--r-- 1 vm vm 1151882 2010-02-13 21:53 test.jpg

90度回転を4回で、元に戻っていないので、無劣化ではないと思う。(何種類化の実験の結果、Exifタグ有り無し二関わらず、ファイルサイズが変化した)

■ gthumb

Exifタグが付いた画像ファイルを回転すると、単にExifタグ内の

# ls -la test.jpg -rwxr-xr-x 1 vm vm 938385 2010-02-13 21:51 test.jpg # env LANG=C exif test.jpg |grep Orientation Orientation |right - top ~ ここで、gthumbの回転処理(右90度)を行う ~ 20100213-gthumb02.png # ls -la test.jpg -rwxr-xr-x 1 vm vm 938385 2010-02-13 22:56 test.jpg # env LANG=C exif test.jpg |grep Orientation Orientation |bottom - right

Exifデータとサムネイル画像を削除して、どうなるか見てみる。

# exif --remove -o test.jpg test.jpg Wrote file 'test.jpg'. # exif -r -o test.jpg test.jpg Wrote file 'test.jpg'. # ls -la test.jpg -rw-r--r-- 1 vm vm 879217 2010-02-13 23:15 test.jpg ~ ここで、gthumbの回転処理(右90度)を4回行う (合計360度) ~ # ls -la test.jpg -rw-r--r-- 1 vm vm 835749 2010-02-13 23:16 test.jpg

ファイルサイズ変わってますね…。無劣化回転ではないと思います。

■ MaPiVi

Exifデータとサムネイルを削除した後に、Edit - rotate - rotate right (lossless) を実行した前後の結果を比べてみた。

# ls -la test.jpg -rw-r--r-- 1 vm vm 879217 2010-02-13 23:18 test.jpg # ls -la test.jpg -rw-r--r-- 1 vm vm 835749 2010-02-13 23:19 test.jpg

ファイルサイズ変わってますね…。無劣化回転ではないと思います。

■ 参考リンク
Lossless jpegtran applications