【问题标题】:Programatic Screenshot with Camera View带有相机视图的程序化屏幕截图
【发布时间】:2020-01-04 22:26:16
【问题描述】:

我正在使用下面的代码截取屏幕截图,但它将相机视图替换为全黑(尽管所有其他 UI 元素都很好——我需要相机视图和 UI 元素)。

我发现的所有类似问题的答案都非常陈旧/已弃用,或者在 Swift 中。如果有人对此问题有简单、Obj-C 解决方案,将不胜感激。

谢谢!

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
    UIGraphicsBeginImageContextWithOptions(self.view.window.bounds.size, NO, [UIScreen mainScreen].scale);
} else {
    UIGraphicsBeginImageContext(self.view.window.bounds.size);
}

[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImagePNGRepresentation(image);
if (imageData) {
    [imageData writeToFile:@"Screenshot.png" atomically:YES];
    NSLog(@"Screenshot write successful");
} else {
    NSLog(@"Error while taking screenshot");
}

【问题讨论】:

  • 相机视图变黑是什么意思?您是否要截取相机的屏幕截图?这个问题有点混乱
  • @AnjulaS。是的,我正在尝试以编程方式截取屏幕截图,但屏幕上的摄像头视图显示为黑色,而不是摄像头所看到的。

标签: ios objective-c ios13 avcapture


【解决方案1】:

如果我理解正确,它可以帮助您获得视频屏幕 - https://stackoverflow.com/a/37789235/1678018
您可以将此图像添加到屏幕图像中(您拥有UIGraphicsGetImageFromCurrentImageContext)。

在另一个 UIImage 之上添加 UIImage 的示例方法:Add UIImage on top of another UIImage

【讨论】:

  • 好的——假设我有两个(一张带有相机的图像,一张带有应用程序的 UI 元素的图像),我如何“添加此图像”并将它们组合起来?有没有更简单的方法来获取所有内容?
  • 我认为我们没有更简单的方法。您有两个图像,您可以将视频屏幕绘制成屏幕截图。比如像这样——stackoverflow.com/a/10523275/1678018
  • 关于组合的代码令人困惑......我不知道用什么替换个人资料和徽章。加上评论者提到它切断了东西。您是否能够更新您的答案以拥有将相机与 UI 视图相结合的功能代码(从原始问题中的代码获取的 UI 视图)?这会很有帮助。
  • 我想通了。为帮助提供赏金。谢谢:)
  • 抱歉,回答太长了,反正你已经想通了。不客气)
猜你喜欢
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 2013-03-29
相关资源
最近更新 更多