Camera 摄像机捕获的方向检测

Camera 摄像机捕获的方向检测,camera,orientation,titanium,appcelerator,Camera,Orientation,Titanium,Appcelerator,一段时间以来,我一直在寻找一个解决方案,但我相信,从根本上说,这是不可能的 我想知道是否有人找到一个像样的黑客或旁路 我的问题是: 我有一个应用程序可以捕获一张照片,然后将该照片用作画布,用户可以点击该画布放置标签 放置标签后,用户上传照片,并将标签提交给客户端服务进行解析 如果照片是横向拍摄的,我需要检测它是横向左侧还是横向右侧,这样当它到达画布时,我可以以正确的方向显示它,如果用户切换到相反的横向模式,则可以将其翻转到正确的方向。 我怎样才能捕捉照片拍摄的方向 function getOri

一段时间以来,我一直在寻找一个解决方案,但我相信,从根本上说,这是不可能的

我想知道是否有人找到一个像样的黑客或旁路

我的问题是:

我有一个应用程序可以捕获一张照片,然后将该照片用作画布,用户可以点击该画布放置标签

放置标签后,用户上传照片,并将标签提交给客户端服务进行解析

如果照片是横向拍摄的,我需要检测它是横向左侧还是横向右侧,这样当它到达画布时,我可以以正确的方向显示它,如果用户切换到相反的横向模式,则可以将其翻转到正确的方向。

我怎样才能捕捉照片拍摄的方向

function getOrientation(o) {
    switch (o){
        case Titanium.UI.PORTRAIT:
            return 'portrait';
        case Titanium.UI.UPSIDE_PORTRAIT:
            return 'upside portrait';
        case Titanium.UI.LANDSCAPE_LEFT:
            return 'landscape left';
        case Titanium.UI.LANDSCAPE_RIGHT:
            return 'landscape right';
        case Titanium.UI.FACE_UP:
            return 'face up';
        case Titanium.UI.FACE_DOWN:
            return 'face down';
        case Titanium.UI.UNKNOWN:
            return 'unknown';
        }
    }
}

Ti.Gesture.addEventListener('orientationchange',function(e){
    Ti.API.info('Current Orientation: ' + getOrientation(Titanium.Gesture.orientation));
    var orientation = getOrientation(e.orientation);
    Titanium.API.info(
        "orientation changed = "+orientation+", is     portrait?"+e.source.isPortrait()+", orientation = "+Ti.Gesture.orientation + "is landscape?"+e.source.isLandscape()
    );
});
从中修改了一点,但应该可以做到这一点

这应该做上面没有做的事情

Titanium.Media.showCamera({
    success:function(event) {
    var orientationWhilePictureTaken = Ti.Gesture.orientation;
        // all other camera code...
    }
});

只需查看
事件媒体的高度和宽度
即可至少确定纵向与横向。这并不能帮助你选择翻转的方向,尽管我不确定你为什么需要从捕获中找出这个方向。图像以正确的自然方向保存为横向照片,这样您只需将其旋转到手机的当前方向即可

Titanium.Media.showCamera({
    success: function(event) { 
        var isLandscape = event.media.width > event.media.height;
    }
}

如果你旋转设备,我的问题是我需要图像拍摄时的方向。每次设备方向改变时,上述内容都会改变。不,是应用程序拍摄的照片。我编写了一个与您演示的功能类似的函数,但如果用户更改方向,则返回值也会更改。如果您在应用程序中拍照,则可以使用
Ti.signature.orientation
捕捉方向并将其保存在某个位置,然后在应用程序中拍摄的每张照片中,您都会知道方向。必须超过复杂的是,我尝试了Ti.signature.orientation,但似乎从未奏效,但一旦我加入了你的,@Brian,效果非常好。谢谢你,先生@joseym你是如何将图像旋转回正常位置的??你能分享一下吗?是的,我已经在测试宽度是否大于高度。然而,这不允许我在屏幕更改时旋转到正确的位置。