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
    }
}
现在,当我捕获图像并缩放时,文本变得模糊。
提前致谢
编辑 我正在尝试从 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
         }
}
获得高分辨率图像,
let image = myView.takeScreenshot(with: 5.0)
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)!)
    }
}
使用:
let img = UIImage.init(view: self.yourView)