You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用UIGraphicsImageRenderer生成图片PPI不符合预期如何解决?

问题原因

UIGraphicsImageRendererFormat 初始化时默认读取当前设备主屏幕的缩放系数,主流iOS设备屏幕缩放系数为3,这就是上下文scale为3.0的来源,3倍缩放对应72*3=216PPI,和你观测到的现象完全匹配。

修复方案

手动将UIGraphicsImageRendererFormat的scale属性设置为1,即可得到72PPI的输出图片,修改后代码如下:

let imageRendererFormat = UIGraphicsImageRendererFormat()
// 手动指定缩放系数为1,对应72PPI
imageRendererFormat.scale = 1.0
let imageRenderer = UIGraphicsImageRenderer(size: image.size, format: imageRendererFormat)
let pngData = imageRenderer.pngData(actions: { context in
    let rect = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)
    image.draw(in: rect)
})

补充说明

如果需要输出图片的PPI和原图片保持一致,直接将scale设置为原图片的scale属性值即可:
imageRendererFormat.scale = image.scale
该调整不会修改输出图片的逻辑分辨率,仅修改图片元数据中存储的PPI数值,不会导致图片清晰度变化。


内容的提问来源于stack exchange,提问作者Logan Shire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 02:03:02