从滚动视图中的 UIimageView 获取可见部分图像

Get Visible portion Image from UIimageView in Scrollview

我在一个可以放大和缩小的 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 分辨率。

此逻辑只是屏幕内容的基本捕获。

我知道可以有更好的方法,但我找不到解决方案。 非常感谢任何帮助。

你可以试试这个:

let context:CGContext = UIGraphicsGetCurrentContext()!
context.interpolationQuality = .high

我也不确定,但如果您使用以下代码初始化图像上下文,图像质量可能会提高:UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)