1

iOS デバイス用の AS3/Air に組み込まれたアプリがあります。アプリでは、ユーザーがここのコードを使用してカメラロールから画像を選択できるようにしますhttp://www.adobe.com/devnet/air/articles/uploading-images-media-promise.htmlただし、一部の画像では、アップロードされたものは、正しく回転されていません。

EXIFデータがいくつかあることを読みましたが、これを取得する方法や、これが向きを設定するための正しいデータであるかどうかはわかりません.

どんな助けでも大歓迎です。

4

2 に答える 2

1

はい、EXIF を読む必要があります。それについては@Adobeフォーラムで素晴らしい議論がありました。まだ見つけられるかどうか見てみましょう...ここにあります: http://forums.adobe.com/thread/875157 これを iOS で動作させるには make!

そのスレッドの「最終的な」実装は完全に防弾ではないため、重要な問題を指摘させてください(そこに新しい情報があるかどうかはわかりません。今は説明しません。長すぎます):

ストリームが検証されていない場合、ExifInfo のコンストラクターが返すことに注意してください。

public function ExifInfo(stream:ByteArray) {
    if (!validate(stream)) {
        return;
    }
    _tiffHeader = new TIFFHeader(stream);
    readIFDs(stream);
    readThumbnail(stream);
}

ifdsしたがって、exif インスタンスにオブジェクトが存在するかどうかを確認する必要があります。このチェックを行わないと、null ポインター例外がスローされます。次のようなものを使用できます。

public static function getImageOrientation(imageData:ByteArray):String {
    var exif:ExifInfo = new ExifInfo(imageData);
    var ifd:IFD;
    var str:String = "";


    if(exif.ifds) { //happens only if there is info
        ifd = exif.ifds.primary;
        for (var entry:String in ifd) {
            if(entry.toLowerCase() == "orientation"){
                str = ifd[entry];
                break;
            }
        }
    }

    switch(str) {   
        case "1": //normal
            str = ImageOrientation.NORMAL;
            break;

        case "3": //rotated 180 degrees (upside down)
            str = ImageOrientation.UPSIDE_DOWN;
            break;

        case "6": //rotated 90 degrees CW
            str = ImageOrientation.ROTATED_LEFT;
            break;

        case "8": //rotated 90 degrees CCW
            str = ImageOrientation.ROTATED_RIGHT;
            break;

        case "9": //unknown & fall-thru
        default:
            str = ImageOrientation.UNKNOWN; 
            break;

    }
    return str;
}

編集: 実装に問題があった場合は、コメントを残してください。完全なコードを投稿します。しかし、それは私が言及したスレッドから理解できます。

于 2013-08-27T21:23:12.390 に答える
0

puks1978. iOS と Android の両方で機能する、問題を完全に解決する記事を見つけました。

http://blogs.adobe.com/cantrell/archives/2011/10/parsing-exif-data-from-images-on-mobile-devices.html

同時に、iOS デバイスで Air からファイルをアップロードすることについて質問したいと思います。画像ファイルをサーバーにアップロードしたと言いました。どのようにファイルをアップロードしましたか? どのバージョンの iOS とどのバージョンの Air SDK を使用していますか? xxx-app.xml ファイルで何らかの構成を行いましたか?

私はあなたと同じ解決策を試しました

www.adobe.com/devnet/air/articles/uploading-images-media-promise.html
、しかしFile.upload(URLRequest)は iOS8 で動作しませんでした。File.uploadはサーバー側にリクエストを送信しませんでした。Air SDK for iOS が何らかの理由で http リクエストの送信に失敗したようです。

次のリンクにアクセスして、これに関する私の問題を確認してください。

ActionScript の File.upload が Air SDK for iOS デバイスで機能しない

私のサンプルコードは github にアップロードされています。

github.com/bluewindjava8/actionscript_file_upload_for_ios

お時間がありましたらチェックしていただけませんか。よろしければコードを送っていただけますか?どうもありがとうございました。

于 2015-03-12T07:02:25.820 に答える