保存到服务器后,ios图像方向上的AS3 air app错误

时间:2013-08-27 03:23:55

标签: ios actionscript-3 air

我有一个内置于AS3 / Air for iOS设备的应用程序。在应用程序中,我允许用户使用此处的代码http://www.adobe.com/devnet/air/articles/uploading-images-media-promise.html从相机胶卷中选择图像,但是对于某些图像,上传时它们会被错误地旋转。

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

是的,您需要阅读EXIF。关于@Adobe论坛有一个很好的讨论,让我看看我是否还能找到它......这是:http://forums.adobe.com/thread/875157 阅读你必须做的线程中的步骤才能使这项工作在iOS上!

让我指出一个重要的问题,因为" final"该线程中的实现并不完全是防弹的(我不确定那里是否有一些新的信息,我现在还没有通过它,太长了):

注意如果未验证流,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;
}

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

答案 1 :(得分: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's File.upload does not work on Air SDK for iOS devices

我的示例代码已上传到github。

github.com/bluewindjava8/actionscript_file_upload_for_ios
如果你有空的话,请你帮我查一下。如果可以的话,请你把你的密码发给我吗?非常感谢你。