iPhoneやiPodで撮影した写真がアメブロなどで横向きになる場合の対応

[最終更新] 2017年2月21日

母はいまだに私が昔プレゼントしたiPod touchを使ってくれています。3.5インチ時代の、ジョブズの遺産です。この頃のデザインが私は一番カッコイイと思います。

それはさておき、iPod touchで撮影した写真をアメブロにアップロードすると、縦で撮った写真が横向きになるので、なんとかならないかと相談を受けました。その原因と対応について書きます。結論だけ書くとスクリーンキャプチャ(スクリーンショット)で再撮影が一番楽だと思います。

現象

iPhone(iPod touch)で、縦向きで写真を撮影した。PCで見た時、通常の画像ビューアーアプリで開くと、ちゃんと縦向き。しかし、それをアメブロなどのブログにアップロードすると、何故か横向きになってしまう。

原因

アプリケーションが写真のメタデータをどう解釈するかの違いと思われます。画像データには、「この画像はどういうものか」を記録する領域があり、メタデータと呼ばれます。

その中に、撮影日時や、画像を撮影した場所、撮影した方向などを記録したExif情報というものがあります。iPhoneやiPodで撮影した場合、撮影した時のデバイスの方向を元にして、画像の向きの情報が、Exif情報として残されます。

その情報をどう取り扱うかは、画像を開くアプリケーション側に委ねられます。多くのビューアーアプリでは、その情報をきちんと扱ってくれるので、問題ありません。しかし、ブログにアップロードするなどした場合、必ずしもその情報が反映されるとは限りません。その結果、Exifの画像の方向という情報が無視されてしまい、縦向きの画像なのに横向きの画像になってしまう、という現象が起きます(参考「ブラウザーと画像のEXIFのお話 – Pastalablog in はてな」)。

対応

対応としては、Exifで画像の方向を指定するのではなく、画像自体を回転させて、かつそのようにExif情報を適切に書き換えることが考えられます。その具体的な方法は色々考えらますが、一番楽なのはスクリーンキャプチャだと思います。

スクリーンキャプチャで範囲指定撮影

必要な画像を開いた状態で、スクリーンキャプチャで範囲を指定して撮影します。つまり、画像の再生産です。

これの良いところは、位置情報など、公開に注意を要する情報もなかったことにできることです。さらに、サイズ調整とトリミングも同時にできる(昨今のスマートフォンで撮影した写真は、ブログにそのまま上げるには大きすぎる)。実は私も、ブログに写真をアップロードするときは、スクショで再撮影しています。楽なんです。

まず、アップロードしたい写真を適当なアプリで開きます。その後、スクリーンキャプチャしますが、やり方をMac、Ubuntu 14.04、Windowsに分けて書きます。

Macの場合

Macの場合は、Cmd + Shift + 4を同時に押すと、範囲指定でスクリーンキャプチャを撮影することが可能です。なお、Cmd + Shift + 3で全画面撮影です。便利。

Ubuntu 14.04の場合

Ubuntu 14.04の場合、Shift + PrintScreenキーで部分撮影できます。ちなみに、Alt + PrintScreenでアクティブウィンドウのみ撮影、PrintScreenで全画面撮影です。けっこう便利。

Windowsの場合

Windowsはちょっとややこしいです。「windowsスクリーンショットのやり方!範囲指定も簡単~♪ | komidoriの今が旬!!」の記事が素晴らしいのでここを参考にしてください。終わり。

わかる人向け:Imagemagickのconvert -auto-orientを使う

見出しだけみて何のことかわかる人向け別解。ImageMagickでもできます。さすが。

まず画像の方向の情報については、identifyコマンドで調べられます。たとえば以下のように。

$ identify -verbose hoge.jpg | grep -i orient

convertコマンドの-auto-orientオプションを使用することで、orientation情報に基づいた画像の回転と、Exif情報の書き換えが適切に行われます。以下に、hoge.jpgをhosei_hoge.jpgに変換する例を書きます。

$ convert -auto-orient hoge.jpg hosei_hoge.jpg

画像は回転され、先のidentifyコマンドで確認すると、メタデータもたしかに書き換わっていることがわかります。

カレントディレクトリにあるjpgすべてに適用するには、以下です。

 $ for f in *.jpg; do convert -auto-orient "${f}" "hosei_${f}"; done;

以上。

関連記事

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です