0

我正在尝试使用 UIGraphicsImageRenderer 在上传到我的网络服务器之前修复图像的方向,以下代码有效,但它生成的图像具有比我想要的更高的 PPI:

        let imageRendererFormat = UIGraphicsImageRendererFormat()
        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 是 216 而不是预期的 72。我观察到原始图像的比例是 1.0,但 context.currentImage 的比例是 3.0。我不确定这个 3.0 号码是从哪里来的。不过,这可能解释了 216 PPI,因为 3 x 72 = 216。

如何修复正在渲染的图像的 PPI?我应该将比例因子应用于上下文还是什么?

4

1 回答 1

0

我自己想出来的 - UIGraphicsImageRendererFormat 有一个“比例”属性,默认为与主屏幕相同的比例。为了获得具有正确 PPI 的图像,我必须将比例显式设置为 1.0。

于 2021-07-13T21:20:17.963 回答