我在UIScrollView中有一个UIImageView,可以在其中放大和缩小。现在,在用户选择了要放大的特定内容之后,我想裁剪出现在滚动视图中的那部分图像,并以UIImage的形式获取它。
为此,我正在使用
extension UIScrollView {
var snapshotVisibleArea: UIImage? {
UIGraphicsBeginImageContext(bounds.size)
UIGraphicsGetCurrentContext()?.translateBy(x: -contentOffset.x, y: -contentOffset.y)
layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
但是当我执行此操作时,图像质量会大大降低。即使我使用4K图像,最终产品看起来也像360p分辨率。
此逻辑只是基本的屏幕内容捕获。
我知道可以有更好的方法,但是我找不到解决方法。 我们非常感谢您的帮助。
答案 0 :(得分:1)
您可以尝试以下方法:
let context:CGContext = UIGraphicsGetCurrentContext()!
context.interpolationQuality = .high
我也不知道,但是如果您使用以下代码初始化图像上下文,则可以提高图像质量:UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)