摄像头捕获的方向检测

时间:2011-04-18 16:40:28

标签: camera orientation titanium appcelerator

一段时间以来,我一直在寻找解决方案,并且相信它的核心是不可能的。

我想知道是否有人找到了不错的黑客或旁路。

我的问题是:

我有一个捕获照片的应用,然后该照片用作用户可以点按以放置标签的画布。

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

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

我如何捕捉拍摄照片的方向?

2 个答案:

答案 0 :(得分:2)

只需查看event.media的高度和宽度,至少可以确定纵向与横向。这不会帮助你翻转哪个方向,虽然我不确定为什么你需要从捕获中找出答案。图像以正确的自然方向保存为风景照片,这样您只需将其旋转到手机的当前方向

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

答案 1 :(得分:1)

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

KS修改了一下,但是应该这样做。

这应该做上面没有的事情

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