seg*_*ggy 10 resolution image ios swift swift5
我希望你们都安全。
我知道这个问题被问了好几次,但没有得到完美的答案。
我只是想从 UIView 中捕获高分辨率的图像,主要是图像不应该是模糊的。
我已经尝试过这段代码
extension UIView {
func asImage() -> UIImage {
let renderer = UIGraphicsImageRenderer(size: self.bounds.size)
let capturedImage = renderer.image {
(ctx) in
self.drawHierarchy(in: self.bounds, afterScreenUpdates: true)
}
return capturedImage
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我捕获图像并缩放时,文本变得模糊。
提前致谢
编辑 我正在尝试从 UIView 创建高分辨率图像。当我缩放图像的 1 部分时,文本变得模糊。
请检查下图
Kom*_*ani 11
您可以按照本节contentScaleFactor中的描述设置属性以使其更加清晰。
例如,您可以使用以下代码,
extension UIView {
func scale(by scale: CGFloat) {
self.contentScaleFactor = scale
for subview in self.subviews {
subview.scale(by: scale)
}
}
func takeScreenshot(with scale: CGFloat? = nil) -> UIImage {
let newScale = scale ?? UIScreen.main.scale
self.scale(by: newScale)
let format = UIGraphicsImageRendererFormat()
format.scale = newScale
let renderer = UIGraphicsImageRenderer(size: self.bounds.size, format: format)
let image = renderer.image { rendererContext in
self.layer.render(in: rendererContext.cgContext)
}
return image
}
}
Run Code Online (Sandbox Code Playgroud)
获得高分辨率图像,
let image = myView.takeScreenshot(with: 5.0)
Run Code Online (Sandbox Code Playgroud)
extension UIImage {
convenience init(view: UIView) {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
view.drawHierarchy(in: view.bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.init(cgImage: (image?.cgImage)!)
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
let img = UIImage.init(view: self.yourView)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1984 次 |
| 最近记录: |