ページ目次
ImageMagickで画像の色合いが変わる
オリジナル画像と処理後の画像を比較すると
Webサイト(アプリ)からサーバー側に画像をアップロードする際、画像のリサイズや切り抜きなどをImageMagickを使って処理していました。しかし、サーバー側にアップされた画像が元画像の色味とどうも違う気がしていました。
早速、元画像とImageMagickで処理されサーバーに保存されている画像とを比べてみました。
これは、違う気がするどころか、明らかに違います。原因はなんだろうか。
結論から言うと、-colorspaceオプション
特定のバージョンでオプションの sRGB と RGB が逆になった模様
画像処理については、調べてみると結構奥が深そうなので、正直私もちゃんと理解していませんが、ImageMagickの色空間を指定するオプション(-colorspace)に変更があったみたいです。
※ バージョン 6.7.5-5 ~ 6.8.0-3
Color management has changed significantly between ImageMagick version 6.7.5-5 and 6.8.0-3 in order to better conform to color and grayscale standards.
The first major change was to swap -colorspace RGB and -colorspace sRGB. In earlier versions, RGB really meant non-linear sRGB. With the completion of the changes, RGB now means linear color and sRGB means non-linear color in terms of their respective colorspaces.
参照元: www.imagemagick.org
要するに、
「バージョン6.7.5-5から6.8.0-3では、colorspaceオプションがひっくり返って、それまで “sRGB” と指定していたものは “RGB” で、“RGB” と指定していたものは “sRGB” にしてね!」
と、いうことらしい。
さて、イヤな予感がしますが、ここでサーバ上のImageMagickのバージョンを見てみましょう。
$ convert -version
Version: ImageMagick 6.7.2-7 2016-06-16 Q16 http://www.imagemagick.org
見事に逆転する前のふっるいバージョン!!
sRGBを指定して実行していた
なぜこのようなことが起こったのか。
それはGoogle先生から紹介いただいた世の中の達人たちに下記の教えを授かっていたからです。
- 色空間(colorspace)をちゃんと指定していないとナンタラカンタラ
- 【-colorspace sRGB】を指定する
これをバージョン違いなんかには目もくれず忠実に実行していたのが原因でした。確認ミス。
$ convert -colorspace sRGB original.jpg converted.jpg
色空間とか、RGBとか、さらにはlinearとかnon-linearとか専門的な言葉のオンパレードですが、その辺はまた詳しく勉強します。
-colorspace RGB で解決
とりあえず、-colorspaceにRGBだけ指定して実行してみました。
$ convert -colorspace RGB original.jpg converted.jpg
これで大丈夫でした。しかし画像処理は奥が深いです。
“ImageMagickの特定バージョンではcolorspaceオプションがひっくり返るから注意” への1件の返信
コメントは受け付けていません。