スマホからアップロードした画像の向きを修正する

スマホからアップロードした画像の向きを修正する

先日、スマホで撮影した写真をサイトにアップロードした場合、
縦で撮影したものでも横長の画像として保存されてしまう事象が発生しました。
その時の対応方法を忘れないようにまとめておきます。

<なぜ起きるか>
スマホで撮影した画像は、撮影時のカメラの向きにかかわらず、横長の状態で保存されています。
そして表示の際にExif情報から撮影時のカメラの向きなどを読み込んだ上で表示をしています。
ですので、サーバーにアップロードする時にはExif情報を元に画像を回転してから保存する必要があるのです。

//PHPでExif情報を取得する方法

$file_name = 'xxx.jpg';

//↓$exif_datas内の Orientationという配列に値がセットされる。
$exif_datas = exif_read_data($file_name);

<Orientationの中身>

Orientation = 1 回転無し
Orientation = 2 左右反転
Orientation = 3 180°回転
Orientation = 4 上下反転
Orientation = 5 時計回りに90°回転した後、左右反転
Orientation = 6 時計回りに90°回転
Orientation = 7 反時計回りに90°回転した後、左右反転
Orientation = 8 反時計回りに90°回転

<修正方法>
スマホからの撮影の場合 Orientation = 6 であることがほとんどなので、
PHPに画像を回転させるimagerotate関数が用意されていますので、
画像を回転してから保存するだけです。

TAG

  • このエントリーをはてなブックマークに追加
しょぼん
取締役 しょぼん syobon

最近エネルギーの90%を卓球に向けています。