14

ブラウザから写真をアップロードできるウェブアプリを作成しました。iOS 6でこれを使用すると、アップロード時にポートレートで撮影された場合でも、写真は横向きになってしまうようです。画像を正しい方法で取得するためにサーバー側のチェックを行う必要がありますか、それともこれを修正するためにアップロードフォームに適用できるiOS固有の属性/ JavaScriptのようなものがありますか?

アップデート

要求に応じて、これを行うために私が書いたコードは次のとおりです。前提条件は、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;
}
4

4 に答える 4

6

画像のexifメタデータを確認してください。iPhoneカメラは「回転した」画像を撮影します。

于 2012-10-24T20:27:11.837 に答える
2

このjQueryプラグインを試してみてください(このスレッドの下部にあります)

iOS6とSafariの写真のアップロード-ファイルAPI+Canvas +jQueryAjaxファイルの非同期アップロードとサイズ変更

于 2012-10-25T04:48:23.000 に答える
1

A-Liveの答えの拡張として:

ルビーを使用している場合、RMagickにはauto_orientメソッドがあります。ドキュメントから:

画像のEXIF方向タグに基づいて、画像を回転または反転します。最新のデジタルカメラの一部のモデルのみが、画像に向きをタグ付けできることに注意してください。画像に方向タグがない場合、または画像がすでに適切に方向付けられている場合、auto_orientは画像の正確なコピーを返します。

于 2013-02-12T14:46:41.830 に答える
0

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

そのサービスを経由する前は、iPhoneで撮った写真は、デスクトップ上でのみ回転して表示されていました(理由はないようです)。

Cloudinary URLの背後にある場合 画像変換関数を使用すると、画像は適切な向きで返されます。

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

于 2014-01-23T18:37:29.207 に答える