从Scrollview中的UIimageView获取可见部分图像

时间:2019-02-08 10:04:12

标签: ios swift uiscrollview uiimageview uiimage

我在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分辨率。

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

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

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

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

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