Ios 将图像(UIImageView)覆盖到照片中

Ios 将图像(UIImageView)覆盖到照片中,ios,swift,avfoundation,Ios,Swift,Avfoundation,拍照时是否有集成UIImageView的方法 我似乎找不到讨论这个问题的话题 我想做的是在预览上有一个UIImageView覆盖。当快门被点击时,它应该拍摄嵌入UIImageView的照片 这就是我现在的处境。“测试图像”部分将可拖动到预览视图的顶部。我想在按下快门按钮时拍摄的图像中包含该图像 这可能吗?还是有更好的办法 我使用的是AVCaptureVideoPreviewLayer、AVCaptureSession和AVCapturePhotoOutput。我只是把UIIMageView放在

拍照时是否有集成UIImageView的方法

我似乎找不到讨论这个问题的话题

我想做的是在预览上有一个UIImageView覆盖。当快门被点击时,它应该拍摄嵌入UIImageView的照片

这就是我现在的处境。“测试图像”部分将可拖动到预览视图的顶部。我想在按下快门按钮时拍摄的图像中包含该图像

这可能吗?还是有更好的办法

我使用的是AVCaptureVideoPreviewLayer、AVCaptureSession和AVCapturePhotoOutput。我只是把UIIMageView放在UIView上面,其中AVCaptureVideoPreviewLayer也是一个子视图


编辑:已测试将UIView保存为图像,它不包括预览层(仅返回UIView+UIImageView覆盖)。

至少有两种方法

1) 从相机捕获照片,并根据可拖动的图像视图位置添加覆盖图像。这将产生最好的质量

2) 如果您不需要照片质量,可以使用另一种解决方案-在图形上下文和视频预览层中渲染可拖动的视图层:

func takePhotoWithOverlay()->UIImage?{
让overlayImageView//UIImageView与overlay图像一起使用
让videoPreviewLayer//AVCaptureVideoPreviewLayer
guard let superview=overlayImageView.superview else{return nil}
UIGraphicsBeginImageContextWithOptions(superview.bounds.size,false,0.0)
延迟{UIGraphicsSendImageContext()}
guard let context=UIGraphicsGetCurrentContext()else{return nil}
videoPreviewLayer.render(在:上下文中)
overlayImageView.layer.render(在:上下文中)
返回UIGraphicsGetImageFromCurrentImageContext()
}

不清楚您想做什么,请使用更多详细说明更新您的问题。我将附加一张图像来说明我想做什么。您可以在相机处于活动状态时将星图添加为子视图,或者如果您使用UIImagePickerController,则可以将星图添加为覆盖视图。一旦拍摄到图像,并导航到预览模式,将star imageview放置在与相机屏幕相同的位置。一旦需要共享/保存图像,那么您需要在图像中的同一位置添加此星形图像作为水印。如果您可以添加有关当前视图层次结构以及如何准确捕获图像的更多信息(您使用的是
AVCaptureVideoPreviewLayer
?),那将非常有用。谢谢!最后实际上,我已经得出了第一个结论,但我将尝试您给出的第二个选项,因为照片质量并不是最重要的,我们实际上在上传过程中缩小了图像的比例。您有方法1的示例吗?