0

Nexus S 出现问题,在拍摄照片时第一次出现问题 Cwac 相机崩溃后:

我用 screenOrientation:portrait 拍了一张照片,但拍了一张风景照片,所以旋转了 90°

在代码中

在我的 SimpleCameraHost 扩展类中,接收到的位图具有风景图像的尺寸

@Override
public void saveImage(byte[] image)
{
      Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
...

LOG bitmap.getWidth => 2560

LOG bitmap.getHeight => 1920

4

1 回答 1

0

照片的方向应与设备的实际方向相匹配。IOW,如果设备是纵向的,图像应该是纵向的。如果设备是横向的,图像应该是横向的。值的选择android:screenOrientation(或根本没有)不应该影响这些结果——它只会影响你的 UI 行为方式。

我刚刚在 Nexus S 上进行了测试,后置摄像头按预期工作。我添加android:screenOrientation="portrait"到演示应用程序中,当设备处于纵向模式时,照片以纵向模式保存,而当设备处于横向模式时,照片以横向模式保存。

如果您认为您有相反的证据,请创建一个重现错误的示例项目,并在该项目上提交问题,发布该示例项目以及运行它以重现错误的步骤。


更新

好的,我想我现在明白你所看到的了。Bitmap.decodeByteArray()显然会注意 EXIF 标头,而很多图像查看器却没有。Nexus S 的行为与我迄今为止测试过的其他三星设备不同,我需要对 Nexus S 输出的这些标头进行一些清理工作。我已经添加了一个关于这个的问题,我希望能够很快解决这个问题。

顺便说一句,我还记录了一个增强请求Bitmap,通过另一种方法给你一个saveImage(),以避免你不得不解码byte[].

于 2013-07-10T18:58:53.377 回答