write ahead log

ロールフォワード用

PHPでiPhoneの写真からサムネイル作ると向きが変わって困った

ExifのOrientation情報使って表示してね、って仕組みらしい。へー。

サムネイル作りたい

サムネイル作成はこちらをそのまま参考にさせてもらった。

Qiita| PHP: GDで画像のサイズ変更やサムネイル生成のやりかた

画像の向きかわるやん

で、上記まで試すと向きが変わってた。まじかー。

で、こちらを参照した。

とっちらか~る| PHPで写真のExif回転に対応する

Exif読んで・向きを変えて・保存って対応できる。なるほど。

ためしてみる

なるほどできた。selfの関数は上記のリンクから頂いてきた。
(さすがにまるごと貼るのは気が進まないのでリンク辿ってください)

もちろんGDがいる。

/*
 * サムネイル画像をjpgで作成
 */
private static function makeMiniThumbnail($from, $to)
{
    // iPhoneなどの場合exifデータを使って方向を決めているので, 
    // exifデータを取得して最後に回転しておく
    $exif_data = exif_read_data($from);

    //サムネイルのサイズ
    $maxWidth = 300;
    $maxHeight = 300;
    // リサイズ
    list($originalWidth, $originalHeight) = getimagesize($from);
    list($canvasWidth, $canvasHeight) = self::get_contain_size($originalWidth, $originalHeight, $maxWidth, $maxHeight);
    self::transform_image_size($from, $to, $canvasWidth, $canvasHeight);

    // exifデータに合わせて回転する
    if (isset($exif_data['Orientation'])) {
        self::imageOrientation($to, $exif_data['Orientation']);
    }
    return;
}