根据设备方向正确缩放 UIImagePickerController 预览图像
Correct scaling a UIImagePickerController preview image depending on device orientation
我有一个UIImagePickerController
可以拍照。我知道,例如UIImagePickerController doesn't fill screen iPhone 摄像头的纵横比与设备屏幕不同,因此需要裁剪摄像头图像以获得没有黑边的照片。
我的问题如下:
当我在纵向模式下拍照时,预览图像被垂直裁剪,因此图像会填满整个预览space:
但是,当我在横向模式下拍摄照片时,预览图像没有被裁剪,所以预览图像的顶部出现了一个黑条:
我了解到可以使用 UIImagePickerController
的 cameraViewTransform
属性 缩放预览图像。但是我必须在拍照前属性 设置这个,当时我不知道用户会以哪个方向拍照。
因此,如果我在拍摄照片之前应用缩放变换,照片将在纵向模式下被不必要地裁剪,而在横向模式下则被裁剪。如果我不应用转移,则照片是在纵向模式下拍摄的,但在横向模式下有一个黑色的顶栏。
那么在两个方向上正确裁剪照片(最少裁剪,但没有黑条)的正确方法是什么?
有时阅读 docs... 他们说:
重要
UIImagePickerController
class 仅支持纵向模式。
所以 不能在横向模式下使用 UIImagePickerController
。
我有一个UIImagePickerController
可以拍照。我知道,例如UIImagePickerController doesn't fill screen iPhone 摄像头的纵横比与设备屏幕不同,因此需要裁剪摄像头图像以获得没有黑边的照片。
我的问题如下:
当我在纵向模式下拍照时,预览图像被垂直裁剪,因此图像会填满整个预览space:
但是,当我在横向模式下拍摄照片时,预览图像没有被裁剪,所以预览图像的顶部出现了一个黑条:
我了解到可以使用 UIImagePickerController
的 cameraViewTransform
属性 缩放预览图像。但是我必须在拍照前属性 设置这个,当时我不知道用户会以哪个方向拍照。
因此,如果我在拍摄照片之前应用缩放变换,照片将在纵向模式下被不必要地裁剪,而在横向模式下则被裁剪。如果我不应用转移,则照片是在纵向模式下拍摄的,但在横向模式下有一个黑色的顶栏。
那么在两个方向上正确裁剪照片(最少裁剪,但没有黑条)的正确方法是什么?
有时阅读 docs... 他们说:
重要
UIImagePickerController
class 仅支持纵向模式。
所以 不能在横向模式下使用 UIImagePickerController
。