2012-10-24 13 views
13

ブラウザから写真をアップロードできるウェブアプリを構築しました。これを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; 
} 

答えて

5

画像exifのメタデータを確認すると、iPhoneカメラは回転した画像を撮影します。

+0

ありがとう - 「exif」メタデータをつかんで、私の画像のサイズ変更スクリプトにいくつかのコードを追加しました。私は完了しました:) – edcs

+2

私はこのコードをこの回答/質問で共有する必要があります。 – eladleb

+0

@eladleb私はそれが普遍的な解決策なしでは別の問題になると考えています。 exifデータの読み方について特にご質問がある場合は、新しい質問を作成してください。 –

1

みてください:あなたはルビーを使用している場合は、RMagickがauto_orientを持って

を方法。 ドキュメントから:

イメージのEXIF方向タグに基づいてイメージを回転または反転します。 現代のデジタルカメラの一部のモデルのみが画像 に向きを付けることができます。イメージにオリエンテーションタグ がない場合、またはイメージの方向が適切な場合、auto_orientは イメージを正確に返します。

0

これは、画像をCloudinaryで実行していることに注意してください。

私は自分のiPhoneで撮影した写真を転送する前に、デスクトップ上にだけ回転させて表示します()。任意画像変換機能で一度Cloudinary URL後ろ

は、画像は正しい向きに戻されます。

私は有料サービスを利用していますが、無料の層があるようです。

関連する問題