Pau*_*tas 0 screenshot image scale ios swift
我正在为相机胶卷,电子邮件,短信,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)
Run Code Online (Sandbox Code Playgroud)
结果截图质量很差.
我研究了几个小时,发现有几个人有类似的问题.我不能完全理解为我的问题修改解决方案.
我确实设法找到了一个半修复程序.我变了:
UIGraphicsBeginImageContext(size)
Run Code Online (Sandbox Code Playgroud)
至
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size,true,2.0)
Run Code Online (Sandbox Code Playgroud)
这实际上是我的截图缩放了2.0倍
这似乎给我一个更清晰/更好质量的部分截图,虽然图像比我想象的大.
我可以申请哪种解决方案可能更合适吗?
谢谢!
问题在于UIGraphicsBeginImageContext()创建一个具有比例尺的图像上下文1.0,但是您的图层(因为它在屏幕上显示)具有相当于设备屏幕比例的比例 - 这很可能高于1.0.
因此,您希望UIGraphicsBeginImageContextWithOptions()按照正确的说法使用,但不是2.0为了缩放(它将在2x显示器上工作,而不在其他显示器上工作),而是传递0.0.
要应用于位图的比例因子.如果指定值0.0,则比例因子将设置为设备主屏幕的比例因子.
因此,当您执行此操作时,上下文将自动检测屏幕的比例因子,并且图像将在您运行它的任何设备上显得清晰明了.
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |