我在android dev论坛上发布了这个,但是想在这里联系。
我们的应用程序中的一项活动是拍照。图片预览在1.5&屏幕上显示正确的屏幕显示方式。 1.6,但保存时,它会保存jpg 90旋转。
我可以在显示时实时旋转它,我想我可以在保存后重新保存。我的问题是我想在拍照时正确保存。
我的应用程序在1.5中编译工作正常。我有一些记忆问题w / 1.6由于图像尺寸,这是奇怪的b / c图像尺寸增加 拍照时使用surfaceholder / imagecapture拍照 打回来。我似乎通过调整大小来修复重新显示这些图像 他们使用bitmapfactory矩阵。但我的相机现在正在旋转 一切都是90度。看来我的覆盖了surfaceChanged 什么都不做,这是我在90度设置旋转的地方(我不能 记住为什么,这是10个月前!)。我试过旋转 摄像机参数参数为90度,0度。它似乎没有 做任何事......有什么想法?
答案 0 :(得分:6)
相机驱动程序不知道设备的方向。在1.5和1.6中,您需要调用parameters.set(“rotation”,degree)以在调用takePicture()之前告知驱动程序有关旋转的信息。在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