• 前置摄像头水平翻转问题


    这几天在改前置摄像头,刚才看了csdn上关于此问题的热烈讨论,未得出最终结论。我觉得此问题还是有最优解的。
    csdn android版主yiyaaixuexi 认为,前置camera要求: 缩略图和照片一致,并且与取景相反。 也就是在照相的瞬间,会翻折一次。刚刚拿iphone测试了一下,也是如此。
    我用nokia测试,也是如此,但这样有一个问题,就是侧拿手机拍照时,缩略图里的人倒立。修改缩略图,使之与preview一致、与照片相反,问题就解决了。
    实际这个问题有四个像:实像,preview,缩略图,照片;preview是照相时拍摄者在设备上看到的动态画面,缩略图是按下快门后定格的画面,照片是最终存储的文件。
    现在主流设备如yiyaaixuexi所说,是preview与实像相反,而缩略图、照片与实像相同。这样的设计解决了以下两个问题:预览时的镜像效果,存储后图像正向、文字正常。但造成我前面提到的问题:预览画面和按下快门后的“预览图”(缩略图)反向,在侧机时表现尤为明显。解决方法很简单,把缩略图改成与实像相反。

    刚刚看了高富帅朋友的苹果手机,苹果的缩略图虽与照片一致,但它用另一种方式解决了横放手机缩略图与preview倒立的问题:当横放手机时,通过Gsensor感应,旋转缩略图窗口。但是,这里还是有个bug!!!就是如果我将手机平放在桌上,此时Gsensor对XY轴感应失效,横着拍人时,结果preview与缩略图是上下反向的。因此,修改缩略图,使之与preview一致仍是目前的最优解。

    -----------------------------------------------------------------------------------------------------------------

    抱歉,今天想了下,发现修改缩略图使之与preview一致这种做法是不行的。因为当用户点击缩略图查看大图时,会产生严重的不适(图片被水平翻转了),在侧拍时尤为明显。所以还是应该遵循缩略图与最终存储图一致的原则。暂时没有想到比苹果那种方法更好的方案。


    总结这两天的实验,前置摄像头有一个难题,即下述三个需求不可能同时满足:

    1,预览时的镜面效果。

    2,最终保存的图片与实景一致。

    3,预览图与保存图(以及缩略图)一致。

    在没有Gsensor的设备上,一般的做法是完全舍弃第三个需求,即水平翻转预览图,保存图、缩略图与实图相同,如Nokia N78。

    有Gsensor的设备,可以在满足前两个条件的基础上,部分地满足第三个条件。苹果手机的做法是,当手机被横置时(Gsensor y轴读数的绝对值大),把保存图(以及缩略图)旋转(不是翻转)180度,这样虽没有做到需求3(预览图与保存图(以及缩略图)一致),但至少使得用户在拿起手机侧拍时不会发觉预览图(或点击预览图得到的大图)和preview是上下颠倒的。但如果用户将手机放在桌上,Gsensor就无用武之地,照片也不会被旋转,此时若用户横拍,则又会出现倒立的效果图。

    ------------------------------------------------------------------------------------------------------

    在android摄像头应用Camera.java中,有这样一句话Util.setRotationParameter(mParameters, mCameraId, mOrientation);

    类Util中的setRotationParameter函数设置了前置摄像头拍摄图的保存方向,观察这个函数,会发现其与后置摄像头的差别在于90°与270°角拍摄时的处理。从这种处理中也可以看出,当硬件设计者把摄像头按某个方向安放在设备上时,设备的“底边”就已经确定,详见我的为什么镜面成像是左右反而不是上下反(从前置摄像头说起)一文。

  • 相关阅读:
    Android Button上的文字自动变成大写,如何解决呢?
    如何在IamgeButton上面添加文字
    C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。
    解决android:background背景图片被拉伸问题
    service&thread
    MS SQLServer Update语法和实例
    ztree2.6给菜单增加title提示信息[转]
    UltraEdit-14.10.0.1024版本语法着色配置
    linux下c++动态库的生成及使用
    c++动态库与静态库
  • 原文地址:https://www.cnblogs.com/yiru/p/2764330.html
Copyright © 2020-2023  润新知