ios - 保存到服务器后 iOS 图像方向错误的 AS3 air 应用程序

标签 ios actionscript-3 air

我有一个在 AS3/Air 中为 iOS 设备构建的应用程序。在应用程序中,我允许用户使用此处的代码从相机胶卷中选择图像 http://www.adobe.com/devnet/air/articles/uploading-images-media-promise.html然而,对于某些图像,当它们被上传时旋转不正确。

我读过一些 EXIF 数据,但我不知道如何获取这些数据,或者这是否是设置方向的正确数据。

感谢任何帮助。

最佳答案

是的,您确实需要阅读 EXIF。 @Adobe 论坛对此进行了很好的讨论,让我看看我是否还能找到它......它是:http://forums.adobe.com/thread/875157 阅读该线程中的步骤,以便在 iOS 上进行此操作!

让我指出一个重要的问题,因为该线程中的“最终”实现并不是完全可靠的(我不确定那里是否有一些新信息,我现在不会讨论它,太长了):

请注意,如果流未经过验证,ExifInfo 的构造函数将返回:

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

因此需要检查exif实例中是否存在ifds对象。如果不做这个检查,就会抛出空指针异常。你可以使用这样的东西:

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;
}

编辑:如果您在实现它时遇到问题,请发表评论,我会发布完整的代码。但是从我提到的线程中可以理解。

关于ios - 保存到服务器后 iOS 图像方向错误的 AS3 air 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18456413/

相关文章:

ios - UITableViewCell 中的 Nib 文件加载的 UIView 不拉伸(stretch)

ios - 有什么方法可以避免 SwiftUI GeometryReader 阻止嵌套 View 在 List 内增长?

actionscript-3 - 如何以干净、可管理的方式跟踪所有 Box2D 碰撞?

actionscript-3 - AS3 AIR在线加载mp3-错误#2044:未处理的IOErrorEvent:

flash - 在 swf 文件中嵌入二进制视频数据

ios - NSNumberFormatter 在设备上返回 nil,而不是在模拟器上

ios - 如何删除另一次点击的复选标记?

actionscript-3 - ActionScript 3 : Check an array for a match

Flash as3 如何删除数组中的重复项?

android - AsyncTask 也在 flash 中?