Android:相机Activity,图像旋转
Android: Camera Activity, Image rotation
我用 SurfaceView
和相机 类 制作了相机 Activity。
两个片段:当我们第一次拍照时,它移动到第二个片段,显示刚刚拍摄的照片。
(就像 new Intent(MediaStore.ACTION_IMAGE_CAPTURE)
)。
显示图片时出现问题。
当我用人像模式拍照时,它显示得很好,就像第一张一样。
但是,当我在风景模式下拍照时,它显示如下第二张图。
但我希望它看起来像第三个。
我认为问题的发生是因为我在横向模式下翻转相机,phone 并不知道。 (很明显)但是当我打开旋转时,当我旋转 phone.
时切换到横向模式时它会崩溃
相机有没有办法像正常的 android 相机应用程序一样自动知道用户正在以横向模式拍照?
或者我的问题的任何解决方案都可以。
我觉得你的问题比你想象的要简单。
所以在人像模式下,您的设备会拍照,捕捉例如1080p 照片作为垂直图像。在风景(水平模式)中用first fragment
(使用SurfaceView
)拍照时,你仍然例如拍摄照片1080p 照片。
在 second fragment
上查看照片时,默认情况下,您的设备不知道照片的方向。它也可以是人像照片。因此,拍摄图像时,您需要向照片图像添加一个附加属性(或捆绑到第二个片段)告诉第二个片段更改 orientation
并查看特定 orientation
中的图像。
根据有限的信息,我认为您的代码没有错误(除了您提到的崩溃 - 我认为这与 saving/restoring instanceState
来自 bundle) - 但只需要以正确的方向查看图像即可。
通常,图片方向保存在 jpeg 图片的 EXIF header 中。有些设备不会在相机 API 中为您设置此标志,但所有设备都有 ExifInterface class. The support library 让这更容易。
即使标志设置正确,显示图片的片段也必须知道如何应用它才能正确显示。最简单的解决方案是使用 Glyde 或其他一些库。
我用 SurfaceView
和相机 类 制作了相机 Activity。
两个片段:当我们第一次拍照时,它移动到第二个片段,显示刚刚拍摄的照片。
(就像 new Intent(MediaStore.ACTION_IMAGE_CAPTURE)
)。
显示图片时出现问题。 当我用人像模式拍照时,它显示得很好,就像第一张一样。
但是,当我在风景模式下拍照时,它显示如下第二张图。
但我希望它看起来像第三个。
我认为问题的发生是因为我在横向模式下翻转相机,phone 并不知道。 (很明显)但是当我打开旋转时,当我旋转 phone.
时切换到横向模式时它会崩溃相机有没有办法像正常的 android 相机应用程序一样自动知道用户正在以横向模式拍照? 或者我的问题的任何解决方案都可以。
我觉得你的问题比你想象的要简单。
所以在人像模式下,您的设备会拍照,捕捉例如1080p 照片作为垂直图像。在风景(水平模式)中用first fragment
(使用SurfaceView
)拍照时,你仍然例如拍摄照片1080p 照片。
在 second fragment
上查看照片时,默认情况下,您的设备不知道照片的方向。它也可以是人像照片。因此,拍摄图像时,您需要向照片图像添加一个附加属性(或捆绑到第二个片段)告诉第二个片段更改 orientation
并查看特定 orientation
中的图像。
根据有限的信息,我认为您的代码没有错误(除了您提到的崩溃 - 我认为这与 saving/restoring instanceState
来自 bundle) - 但只需要以正确的方向查看图像即可。
通常,图片方向保存在 jpeg 图片的 EXIF header 中。有些设备不会在相机 API 中为您设置此标志,但所有设备都有 ExifInterface class. The support library 让这更容易。
即使标志设置正确,显示图片的片段也必须知道如何应用它才能正确显示。最简单的解决方案是使用 Glyde 或其他一些库。