スマホのカメラなどで写真を撮影した際、基本的に写真データを撮影された向きに保存するのではなく、写真に付属する”Exif”という情報に保存したうえで画像ビューアーで読み出す際都度Exifから写真の回転情報を呼び出して反映する仕組みになっています。
ところが、PHPやHTMLで表示した場合は基本的にこのExif情報が反映されないため、Web上で画像を表示した際に意図しない方向を向いて表示されてしまうことがあります。
つまり、Exif通りに画像を表示させるためには、画像を保存するときか、もしくは画像を呼び出した際に、画像に含まれるExif情報を呼び出して画像データに反映させる必要があります。
PHPでこの処理を行いたい場合、Intervension Imageというライブラリを使用すると、非常に簡単に実装することができます。
まず、Intervension ImageをComposerでインストールします。
composer require intervention/image
インストール後、次のようにしてライブラリを呼び出します。
$image = \Image::make('/path/to/画像の保存バス');
これで目的の画像を読み込んだ状態でIntervension Imageのオブジェクトが出来上がります。
あとは
$image->orientate();
これでExifの回転データが画像のバイナリに反映されます。
なお、Intervension Imageを使用するためには、PHPの画像モジュールである”GD”または”ImageMagick”が必要になります。
モジュールがインストールされているか調べるコマンド:
php -m | grep -e imagick -e gd
実行例:
$ php -m | grep -e imagick -e gd
gd
imagick
# 上記いずれかがあればOK
詳しくは今回の参考サイトを参照してください。