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