WordPressの逆引き作業メモ

このブログはWordPressで業務に使った時の自分の作業用のポイントメモです。

WordPressでスマホからアップロードされる画像が横向きになるのを防ぐ

f:id:jinkosky2009:20190412000128j:plain

WordPressの管理画面もレスポンシブになり、スマホからでも記事を投稿したりカメラで撮影した画像をアップすることができます。

ところが、画像をアップロードすると、思わず横向きになってしまう事があります。

これは、画像の回転情報の属性を判断せずにアップロードしてしまう事が原因です。

スマホで撮影した画像はExifのOrientation属性(90度などの回転情報)を持っているのでそれを読み込めば画像の方向をコントールすることができます。

スマホでは、これを自動的に読み向きを判断しますが、ブラウザやビューワーでは無視され横向きになったりします。

 

 

 

 

以下のコードをfunctions.phpに入れて適用します。アップされる画像のExifを読み込んで自動で判断し回転して保存するコードです。


function my_photo_upload($file) {
    if ($file['type'] == 'image/jpeg') {
        $image = wp_get_image_editor($file['file']);
        if (!is_wp_error($image)) {
            $exif = exif_read_data($file['file']); 
            $orientation = $exif['Orientation']; 
            if (!empty($orientation)) {
                switch ($orientation) {
                    case 8:
                        $image->rotate(90);
                        break;
                    case 3:
                        $image->rotate(180);
                        break;
                    case 6:
                        $image->rotate(-90);
                        break;
                }
            }
            $image->save($file['file']);
        }
    }
    return $file;
}
add_action('wp_handle_upload', 'my_photo_upload');


Exifのデータを読み込めば撮影の日付なども読込ことも可能です。試して見て下さい。