2009-10-22 73 views
3

我发布了这个在android dev论坛上,但想在这里伸出援手。Android 1.6相机旋转?

我们的应用程序中的一项活动是拍照。图片预览显示1.5 & 1.6屏幕上的正确方式,但是当它保存时,它将保存旋转的jpg 90。

我可以在显示时实时旋转它,我想我可以在保存后重新保存它。我的问题是我想拍照时正确保存它。

我的应用程序虽然编译1.5工作正常。我有一些内存问题w/ 1.6由于图像的大小,这是奇怪的b/c的图像大小增加 当通过拍照w/surfaceholder/imagecapture 回调。我似乎已经修复重新显示这些图像,通过调整它们使用bitmapfactory矩阵 。但我的相机现在旋转 应有尽有90度。看来,我的覆盖surfaceChanged 什么都不做,这是我在90设置旋转(我不能 记得为什么,这是10个月前!)。我试图在0度90度旋转 摄像机参数参数。它似乎并不 做任何事情......任何想法?

回答

6

相机驱动程序不知道设备的方向。在1.5和1.6中,在调用takePicture()之前,需要调用parameters.set(“rotation”,度)来告诉驱动程序轮转。在2.0中,有一个新的API setRotation(见下文)。请注意,有些设备会为您旋转整个图片,有些设备只需在EXIF标头中设置方向。

http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setRotation(int)

设置在度的装置的取向。例如,假设设备的自然位置是风景。如果用户以2048x1536分辨率以横向模式拍摄照片,则应将旋转设置为0.如果用户将手机顺时针旋转90度,则应将旋转设置为90.应用程序可使用OrientationEventListener设置此参数。相机驱动程序可以在不旋转图片的情况下在EXIF标头中设置方向。或者驱动程序可能会旋转图片和EXIF缩略图。如果旋转Jpeg图片,则EXIF标题中的方向将丢失或1(第0行为顶部,第#0列为左侧)。
参数
rotation设备以度为单位的方向。旋转只能是0,90,180或270

+0

在2.1上试过,但它永远不会保存到图像。我最初使用Images.Media.insertImage()保存文件。我从来没有在Android上的其他移动平台上遇到过更多的问题。这对我来说是最令人沮丧的过程。 – Brenden 2011-03-15 20:44:23