我正在使用 UIGraphicsBeginImageContextWithOptions 进行一些基本的线条绘制:
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
let path = UIGraphicsGetCurrentContext()
path!.setLineWidth(1.5)
....
x = (az / 360) * Double(size.width)
y = halfheight - Double(alt / 90 * halfheight)
path?.addLine(to: CGPoint(x:x, y:y))
path?.strokePath()
....
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//DEBUGGING - makes quick look work
let _ = image!.cgImage
return image!
调试器报告图像的正确大小,1440x960。但当我使用 QuickLook 时,图像为 2880 × 1920 像素。我很好奇这是否有明显的原因?这是 Quicklook 正在做的事情,还是 Preview 正在做的事情?
最佳答案
调试器很可能为您提供以点为单位的大小,而快速查看将为您提供以像素为单位的大小。
问题是,通过在 UIGraphicsBeginImageContextWithOptions
的 scale
参数中传递 0
,您将使用设备的屏幕比例作为上下文。因此,如果您使用的是 2 倍显示屏的设备,并输入 1440 x 960 的尺寸,您将获得 2880 x 1920 像素的上下文。
如果您想使用像素而不是点,只需将 1
传递到 scale
参数即可:
UIGraphicsBeginImageContextWithOptions(size, false, 1)
或者使用等效的 UIGraphicsBeginImageContext(_:)
调用:
UIGraphicsBeginImageContext(size)
关于ios - UIImage 大小比我设置的要大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41942940/