Ios 使图像与摄影机视图相同

Ios 使图像与摄影机视图相同,ios,swift,camera,uiimagepickercontroller,Ios,Swift,Camera,Uiimagepickercontroller,我正在使用UIImagePickerController拍摄照片。对于全尺寸照片,我使用这种方法 var cameraAspectRatio : CGFloat = 4.0 / 3.0; var imageWidth = floorf(Float(screenSize.width * cameraAspectRatio)); var data = Float(screenSize.height)/imageWidth var scale = CGFloat(ceilf((data * 10.0)

我正在使用UIImagePickerController拍摄照片。对于全尺寸照片,我使用这种方法

var cameraAspectRatio : CGFloat = 4.0 / 3.0;
var imageWidth = floorf(Float(screenSize.width * cameraAspectRatio));
var data = Float(screenSize.height)/imageWidth
var scale = CGFloat(ceilf((data * 10.0) / 10.0))

cameraViewTransform = CGAffineTransformMakeScale(scale, scale)
但在拍摄完图像后,我在相机层看到的视图与照片不同(照片的视图更多,所以它更大)

我想制作一张照片,并使用整个全屏覆盖以相同的比例和视图输出照片。
你能给我一些建议吗?

在我的一个项目中,我从这个链接获得了帮助:


希望这有帮助。

我在我的一个项目中从这个链接获得了帮助:


希望这能有所帮助。

诀窍是让提供视频预览的视图不过度扫描屏幕,并且具有正确的纵横比

我猜有两个地方你必须去看看:

  • AVCaptureVideoPreviewLayer
    的previewLayer属性
  • 您的
    AVCaptureSession
    会话预设
  • 如果后者是
    AVCaptureSessionPresetPhoto
    类型,则帧计算似乎正常(格式为4:3),但请再次检查此位


    然后,
    previewLayer
    应该是
    AVLayerVideoGravityResize
    ,因为这会填充预览以适合您已正确调整大小的视图。

    诀窍是让提供视频预览的视图不会过度扫描屏幕,并且具有正确的高宽比

    我猜有两个地方你必须去看看:

  • AVCaptureVideoPreviewLayer
    的previewLayer属性
  • 您的
    AVCaptureSession
    会话预设
  • 如果后者是
    AVCaptureSessionPresetPhoto
    类型,则帧计算似乎正常(格式为4:3),但请再次检查此位


    然后,
    previewLayer
    应该是
    AVLayerVideoGravityResize
    ,因为这会填充预览以适合您已正确调整大小的视图。

    因此,我需要与在相机中看到的图像相同的图像,但不是全尺寸。您是否找到了解决方案?我也有同样的问题,所以我需要和我在相机里看到的一样的图像,但不是全尺寸。你有没有可能找到解决方案?我也有同样的问题我看到了这个答案,并用它来填充全屏,但还有另一个问题-我拍照的视图是缩放的,而我得到的图像不是缩放的,所以它们是不同的我看到了这个答案,并用它来填充全屏,但还有一个问题-我拍照的视图是缩放的,而我得到的图像不是缩放的,所以他们是不同的