gpt4 book ai didi

ios - 部分屏幕截图和图像质量损失

转载 作者:行者123 更新时间:2023-11-28 09:36:59 25 4
gpt4 key购买 nike

我正在为相机胶卷、电子邮件、短信、FB、Twitter 等打印部分屏幕截图...已选择部分屏幕 - 距顶部 100 像素,距底部 100 像素。

我使用了以下代码:

let top: CGFloat = 100
let bottom: CGFloat = 100

let size = CGSize(width: view.frame.size.width, height: view.frame.size.height - top - bottom)

UIGraphicsBeginImageContext(size)

let context = UIGraphicsGetCurrentContext()!

CGContextTranslateCTM(context, 0, -top)

view.layer.renderInContext(context)

let snapshot = UIGraphicsGetImageFromCurrentImageContext()

UIGraphicsEndImageContext()

UIImageWriteToSavedPhotosAlbum(snapshot, nil, nil, nil)

生成的屏幕截图质量很差。

我研究了几个小时,发现有几个人有类似的问题。我无法完全理解修改针对我的问题提供给他们的解决方案。

我确实设法找到了半修复。我改变了:

UIGraphicsBeginImageContext(size)

UIGraphicsBeginImageContextWithOptions(imageView.bounds.size,true,2.0)

基本上将我的屏幕截图放大了 2.0 倍

这似乎给了我一个更清晰/质量更好的部分屏幕截图,尽管图像比我预期的要大。

我可以应用其他更合适的解决方案吗?

谢谢!

最佳答案

问题是 UIGraphicsBeginImageContext() 创建了一个比例为 1.0 的图像上下文,但是您的层(因为它在屏幕上显示)具有等效比例到设备屏幕的比例——这很可能高于 1.0

因此,您希望按照您正确的说法使用 UIGraphicsBeginImageContextWithOptions(),而不是传递 2.0 作为比例(这将适用于 2x 显示器,但不适用于其他),传递 0.0

As the documentation says for the scale argument:

The scale factor to apply to the bitmap. If you specify a value of 0.0, the scale factor is set to the scale factor of the device’s main screen.

因此,当您执行此操作时,上下文将自动检测屏幕的比例因子,并且图像在您运行它的任何设备上都会呈现出漂亮清晰的效果。

关于ios - 部分屏幕截图和图像质量损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com