Android:相机活动,图像旋转

问题描述 投票:0回答:2

我用SurfaceView和Camera Classes做了一个Camera Activity。

两个片段:当我们首先拍摄照片时,它会移动到第二个片段并显示刚拍摄的照片。 (就像new Intent(MediaStore.ACTION_IMAGE_CAPTURE))。

显示图片时会出现问题。当我以纵向模式拍摄照片时,它显示正常,就像第一张照片一样。

enter image description here

但是,当我以横向模式拍摄照片时,它会显示如下第二张照片。 enter image description here

但我希望它看起来像第三个。

enter image description here

我认为问题出现是因为我在横向模式下翻转相机,手机不知道。 (很明显)但是当我打开旋转时,当我旋转手机时它会变为横向模式时会崩溃。

是否有任何方式相机自动知道用户正在横向模式下拍照,就像普通的Android相机应用程序一样?或者我的问题的任何解决方案都没问题。

android android-camera
2个回答
0
投票

我认为你的问题比你想象的要简单。

因此,在纵向模式下,您的设备会拍摄照片,例如1080p照片作为垂直图像。在first fragment(使用SurfaceView)拍摄风景照片(水平模式)时,您仍然可以拍摄照片作为照片。 1080p照片。

second fragment上查看照片时,默认情况下,您的设备无法知道照片的方向。它也可以是一张肖像照片。因此,在拍摄图像时,您需要为照片图像添加一个额外的属性(或捆绑到第二个片段),告诉第二个片段更改orientation并在特定的orientation中查看图像。

根据有限的信息,我得出结论,你的代码中没有错误(除了你提到的崩溃 - 我认为这与从捆绑中保存/恢复instanceState有关) - 但只需要以正确的方向查看图像。


0
投票

通常,图片方向保存在jpeg图像的EXIF标题中。有些设备不会在相机API中为您设置此标志,但都具有ExifInterface类。 support library使这更容易。

即使正确设置了标志,显示图片的片段也必须知道如何应用它才能正确显示。最简单的解决方案是使用Glyde或其他一些库。

© www.soinside.com 2019 - 2024. All rights reserved.