gpt4 book ai didi

ios - 使用 View 中的相机对应用程序进行屏幕截图会返回空白图像

转载 作者:行者123 更新时间:2023-11-30 11:18:45 28 4
gpt4 key购买 nike

我有这个代码来截取应用程序的屏幕截图:

    var imageSize = CGSize.zero

let orientation = UIApplication.shared.statusBarOrientation
if UIInterfaceOrientationIsPortrait(orientation) {
imageSize = UIScreen.main.bounds.size
} else {
imageSize = CGSize(width: UIScreen.main.bounds.size.height, height: UIScreen.main.bounds.size.width)
}

UIGraphicsBeginImageContextWithOptions(imageSize, false, 0)
for window in UIApplication.shared.windows {
window.drawHierarchy(in: window.bounds, afterScreenUpdates: true)
}

let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.captureImageView.image = image

这是我用于显示相机的代码:

    let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)

do {
let input = try AVCaptureDeviceInput(device: captureDevice!)

captureSession = AVCaptureSession()
captureSession?.addInput(input)
} catch {
print(error)
}

videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession!)
videoPreviewLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill
videoPreviewLayer?.frame = view.layer.bounds
self.cameraView.layer.addSublayer(videoPreviewLayer!)

let previewLayerConnection: AVCaptureConnection? = videoPreviewLayer?.connection
if previewLayerConnection?.isVideoOrientationSupported != nil {
previewLayerConnection?.videoOrientation = AVCaptureVideoOrientation.landscapeLeft
}

captureSession?.startRunning()

我已经尝试了其他 stackoverflow 用户关于这个问题的所有方法,但它并没有真正起作用。可能是什么原因以及如何解决?

最佳答案

for window in UIApplication.shared.windows {
window.drawHierarchy(in: window.bounds, afterScreenUpdates: true)
}

此处您使用该窗口作为屏幕截图 View 。默认情况下,您的窗口颜色为黑色,这就是您获得黑色屏幕截图的原因。

使用 View Controller subview 之一。

尝试使用更新的代码获取第一个屏幕截图。然后用你的相机实现。

您的代码应如下所示

view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)

关于ios - 使用 View 中的相机对应用程序进行屏幕截图会返回空白图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51517282/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com