ブラウザから写真をアップロードできるウェブアプリを構築しました。これをiOS 6で使用すると、アップロード時に写真が縦長で撮影されていても、写真は横向きになります。イメージを正しい方法で取得するためにいくつかのサーバー側のチェックを行うべきか、またはiOS固有の属性/ JavaScriptがあります。これを修正するためにアップロードフォームに適用できますか?iOS 6 Safari画像のアップロード - 方向が正しくない
更新
要求されたとして、ここで私はこれを行うために書いたコードです。前提条件は、私がPHPとWideImageライブラリを使用していることです(これはもっと大きなスクリプトから抜粋したものですので、好きなだけ画像操作に別のものを使うことができます)。
// Load Image Into Wide Image
$image=WideImage::load(IMG_UPLOAD_DIR.$result['name']);
$exif=exif_read_data(IMG_UPLOAD_DIR.$result['name']);
$orientation=$exif['Orientation'];
$result['orientation']=$orientation;
// Use Wide Image To Resize Images
$full=$image->resize(IMG_FULL_H,IMG_FULL_H);
$thumb=$image->resize(IMG_THUMB_W,IMG_THUMB_H);
switch($orientation){
case 2:
$full->mirror()->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
$thumb->mirror()->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
break;
case 3:
$full->rotate(-180)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
$thumb->rotate(-180)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
break;
case 4:
$full->rotate(180)->mirror()->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
$thumb->rotate(180)->mirror()->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
break;
case 5:
$full->rotate(90)->mirror()->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
$thumb->rotate(90)->mirror()->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
break;
case 6:
$full->rotate(90)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
$thumb->rotate(90)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
break;
case 7:
$full->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
$thumb->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
break;
case 8:
$full->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
$thumb->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
break;
default:
$full->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
$thumb->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
break;
}
ありがとう - 「exif」メタデータをつかんで、私の画像のサイズ変更スクリプトにいくつかのコードを追加しました。私は完了しました:) – edcs
私はこのコードをこの回答/質問で共有する必要があります。 – eladleb
@eladleb私はそれが普遍的な解決策なしでは別の問題になると考えています。 exifデータの読み方について特にご質問がある場合は、新しい質問を作成してください。 –