【问题标题】:Saving a camera's preview to a bitmap将相机的预览保存到位图
【发布时间】:2010-12-14 18:25:56
【问题描述】:

我需要一些帮助才能让我的相机正常工作。

我要做的是让用户拍摄一张照片,然后将其用于另一个活动作为视图的背景。重要的是不要有任何倾斜,理想情况下,图像会以尽可能高的分辨率填充整个背景。

我一直在努力让我的相机输出的图片方向正确并与显示器的方向相同。所以我花了一些时间来思考我需要做什么,我认为我根本不需要正常保存的图像。

我想出的是,我需要一个表面视图来显示预览,以及一些文本的叠加层和一个捕获按钮。当用户“拍照”时,它应该自动对焦,然后我需要将预览(在屏幕叠加层下)捕获到位图以在其他活动中使用。

*我是否应该为我的预览扩展 SurfaceView 并将其添加到包含叠加层的 XML 布局中?

*如何将 SurfaceView 的图像保存到位图?

谢谢。

【问题讨论】:

    标签: android canvas surfaceview android-camera


    【解决方案1】:

    马特, 一个基本问题,请原谅我的天真,通过 Intent 将内置摄像头用于 Android 不是更容易吗?可以的,我以前做过。

    【讨论】:

    • 我确实考虑过这一点,我的应用程序中有一个选项可以加载存储在图库中的图像。之所以不这样做是因为我不需要额外的分辨率,并且我希望图像是屏幕的确切方面。内置摄像头似乎也存在图像正确方向的“问题”(我可以将方向与自定义摄像头捆绑传递)。如果我无法让我的相机活动正常工作,我可能不得不求助于使用内置相机应用程序,但我宁愿拥有一款适合我需求的应用程序。
    • 听起来你需要有人督促你完成发布并着手下一个版本。只是我的 2 美分 ;)
    【解决方案2】:

    显然,没有很好的方法将预览帧的图像格式转换为 jpeg,所以我最终通过检查每个相机支持的分辨率并获得最接近的匹配来选择相机的尺寸具有最高分辨率的屏幕纵横比。

    因为 camera.setRotation 方法似乎没有做任何事情,所以如果我处于纵向模式,我只需使用矩阵将图像旋转 90 度,然后再将其保存到卡中。

    【讨论】:

    • 嗨,马特,相机传感器最初在实际设备中旋转 0、90、180 或 270 度。要在任何设备中正确设置旋转,您应该检查旋转值并根据该值旋转它们以匹配您的首选旋转。希望这会有所帮助。
    猜你喜欢
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多