UIImage大小比我设置的大

时间:2017-01-30 18:27:52

标签: ios uiimage

我正在使用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正在做的事情,还是预览呢?

1 个答案:

答案 0 :(得分:1)

调试器最有可能为您提供 points 的大小,而Quick Look将为您提供像素的大小。

问题是,在0的{​​{1}}参数中传递scale,您可以使用设备的屏幕比例来显示上下文的比例。因此,如果您使用的是具有2倍显示屏的设备,并输入1440 x 960的尺寸,则您将获得2880 x 1920像素的上下文。

如果您想使用像素而不是点数,那么只需将UIGraphicsBeginImageContextWithOptions传递到1参数:

scale

或使用等效的UIGraphicsBeginImageContext(_:)电话:

UIGraphicsBeginImageContextWithOptions(size, false, 1)