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