Android:相机活动,图像旋转

时间:2019-02-22 05:06:45

标签: android android-camera

我使用SurfaceView和“相机类”进行了“相机活动”。

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

显示图片时出现问题。 当我以人像模式拍摄照片时,它可以很好地显示,就像第一张照片一样。

enter image description here

但是,当我以横向模式拍摄照片时,它像下面的第二张照片一样显示。 enter image description here

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

enter image description here

我认为出现此问题的原因是,仅因为我在横向模式下翻转了相机,电话才知道它。 (显而易见)但是,当我打开旋转按钮时,当我旋转手机时将其更改为横向模式时,它会崩溃。

照相机是否有任何办法像普通的android照相机应用程序那样自动知道用户正在横向拍摄照片? 或任何解决我的问题的方法都可以。

2 个答案:

答案 0 :(得分:0)

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

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

second fragment上查看照片时,默认情况下您的设备不知道照片的方向。它也可以是人像照片。因此,在拍摄图像时,您需要向照片图像添加一个附加属性(或在第二个片段中捆绑),告诉第二个片段更改{{1} },然后在特定的orientation中查看图像。

基于有限的信息,我得出的结论是您的代码中没有错误(除了您提到的崩溃,我认为这与保存/恢复orientation有关包)-但只需以正确的方向查看图像即可。

答案 1 :(得分:0)

通常,图片方向保存在jpeg图像的EXIF标头中。某些设备不会在Camera API中为您设置此标志,但是所有设备都具有ExifInterface类。 support library使这个过程变得更加容易。

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