ios - UIImage 大小比我设置的要大

标签 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 正在做的事情,还是 Preview 正在做的事情?

最佳答案

调试器很可能为您提供以为单位的大小,而快速查看将为您提供以像素为单位的大小。

问题是,通过在 UIGraphicsBeginImageContextWithOptionsscale 参数中传递 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/

相关文章:

iphone - 如何使用 SOAP Web 服务发送图像数据和其他参数

ios - 推送后重新加载 UITableViewCell

ios - 使用 iOS 发送请求 - 使用 304 HTTPCode 快速回答

objective-c - SDWebImage 下载图像并存储到缓存中以获取 key

ios - 将完整的 UIImageView 渲染为位图图像

ios - 应用内购买以填充核心数据

ios - Swift:从当前时间倒计时到某个时间

ios - 图像未绑定(bind)到 UIImageView

ios - 选择单元格或滚动时 UITableView 上的 UIImage 移动

iphone - layer.renderInContext 没有考虑 layer.mask 吗?