gpt4 book ai didi

ios - UIGraphicsBeginImageContext 不返回视网膜图像

转载 作者:搜寻专家 更新时间:2023-11-01 07:09:31 26 4
gpt4 key购买 nike

我想在图像中捕获当前屏幕。我这样做:

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.isOpaque, UIScreen.main.scale)
self.view.drawHierarchy(in: self.view.bounds, afterScreenUpdates: false)
let snapshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

问题是尺度参数。如果我理解正确,0.0 代表非视网膜,2.0 代表视网膜,3.0 代表 6 Plus 和 7 Plus 的视网膜。无论我在比例参数中输入什么,输出始终是分辨率为 375x667 的图像。我也尝试了不同的方法:

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.isOpaque, UIScreen.main.scale)
self.view.layer.render(in: UIGraphicsGetCurrentContext()!)
let snapshot: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

同样的场景。我什至在使用

UIScreen.main.scale

实际上返回值 2.0。我究竟做错了什么?如何获得更高分辨率的图像?

最佳答案

这段代码可以解决问题

let contextSize = CGSize(width: self.view.bounds.size.width * UIScreen.main.scale, height: self.view.bounds.size.height * UIScreen.main.scale)

UIGraphicsBeginImageContextWithOptions(contextSize, self.view.isOpaque, UIScreen.main.scale)
self.view.layer.render(in: UIGraphicsGetCurrentContext()!)
let snapshot: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

CGContext 不关心规模,它只关心规模。

编辑

您可能希望使用 iOS 10 及更高版本中可用的更新 API

let renderer = UIGraphicsImageRenderer(bounds: self.view.bounds)

let snapshot = renderer.image(actions: { context in
self.view.layer.render(in: context.cgContext)
})

关于ios - UIGraphicsBeginImageContext 不返回视网膜图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45775578/

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