横長の画像、縦長の画像が混った複数の画像を jpg のクオリティを 80% にして、幅を 1200px に揃えたいと思い、次のように ImageMagick の convert コマンドも使って
$ for f in *.jpg; do convert -resize 1200x -quality 80% $f $f; done
と一括変換(※なお上記の例だと元画像が置き換わるので注意!)。 これで横幅が 1200px の画像に揃うはず。
ところが、縦長の画像のなかには 800px × 1200px とかなっているものが…。1200px × 1800px となっているはずなのに。問題なく、そのように変換されているものもある。
あれ、どういうことかなあ、と見てみたら、うまく変換できない画像は、オリジナルは横長画像だけど、exif 情報で縦長画像だよという情報が入っていて、たとえば Windows 10 のエクスプローラーやフォトアプリでは縦長に表示される画像だった。
つまり convert コマンドでは横長画像として変換されてしまってたわけだ。これを問題なく一括変換できるようにするにはなんかスクリプトとか書かないといけないのかな? 面倒くさいなあ~、と思って調べてみたら、convert コマンドには -auto-orient オプションというのがあって、こいつを使えば勝手に縦長画像に変換してくれるらしい。
ってことで
$ for f in *.jpg; do convert -auto-orient -resize 1200x -quality 80% $f $f; done
としてみたら、問題なくすべての画像が横幅が 1200px になったし、正真正銘(?)の縦画像に変換されていた。