注目キーワード
  1. AMP
  2. SEO
  3. PWA

画像が回転してしまう時の対処法

私が担当するシステムで、iPhoneで撮影した画像をアップロードしたら90度回転されて登録してしまった時の話です。

システムを修正するにはライブラリの追加が必要で、リリース作業はしたくなかったのでどう対応したのか、備忘録も含めて共有します。


1. 画像が回転して登録される

スマホで撮影した画像をスマホアプリからアップロードすると正常に登録されるんですが、Web画面からアップロードした時にだけ画像が回転する事象が発生しました。

ただ、常に発生するわけではなく、どうも特定のパターンがある様子。。
実機を使って色々調べました。

2. 原因は画像の向き

調べた結果、以下のことが確認できました。

  • Android13 の端末では発生しない
  • iPhoneの画像だと発生する
  • jpeg画像で発生する

上の情報で調べたところ、どうもjpg画像には「Exif情報」なるものを持っているようで、この情報内にある「画像の向き」をアップロード時に判定しないといけないようです。

<Exif情報>
写真の撮影日時や撮影したカメラの情報、カメラの設定など、撮影した時の情報のこと。
スマホで撮影した画像は端末の角度も保持している為、縦画像や横画像か判別できる。

ちなみに、Web側の処理では画像の縦と横のサイズを取得・比較することで「縦長画像」か「横長画像」かを判定していました。

が、回転する画像については縦と横のサイズが逆に取得されており、横長画像として判定されてました。
※縦:3624px、横:2482px が 縦:2482px、横:3624px と判定されてました

3. 恒久対応

担当しているシステムはJavaで動いています。

画像からExif情報を取得して写真撮影時の端末の向きを取得する必要があり、Exif情報の取得にはライブラリの追加が必要でした。

ライブラリにはいくつか種類があるようで、ググったところ下記の2種類がメジャーのようです。

  • Apache Commons Imaging
  • Metadata Extractor

ただ、ライブラリの追加を伴うリリースは手間がかかるので、今は避けたい・・・
ということで、暫定的な回避策を調べました。

4. 暫定対応

ライブラリの追加を伴わない改修でなんとかならないか、画像をいじったら正常にアップロードできないか、という観点で調べたところ・・・

「画像をペイントで開き、上書き保存する」

これでいけました。
※画像を回転して保存する、Exif情報を消す、という方法も見つかりましたが、事象の改善には至りませんでした。

手順は下記です。

①回転してしまう画像を右クリック
②「プログラムから開く」でペイントを選択
③ペイントで画像が表示された後、そのまま上書き保存
④画像をアップロード

5. 終わりに

今回はライブラリの追加はなしで、という背景があったため、なんとか改善方法を見つけた感じです。

ただ、本来はライブラリを追加してリリースすべきなので、ライブラリの使い方を含め検証して、備忘録としてまたブログに記載したいと思います。

最新情報をチェックしよう!