UI图像大小与实际图像分辨率不同(UIImageWriteToSavedPhotosAlbum)

ely*_*ico 2 uiimage ios swift

我从 ARFrame 获取图像并将其转换为 UIImage ( imageToSave)。

var imageToSave = convert(cmage:arFrameImage)
UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
Run Code Online (Sandbox Code Playgroud)

我保存到 iOS 相册中imageTosave。当我打印时,imageToSave.size我得到1080.0, 1920.0。当我检查图片分辨率时(将其导入到我的 Mac 后),它是1080.0, 1920.0

然后我在上面画一些东西imageToSave

let imageSize = imageToSave.size
let scale: CGFloat = 0
UIGraphicsBeginImageContextWithOptions(imageSize, false, scale)
image.draw(at: CGPoint(x: 0, y: 0))
let rectangle = CGRect(x: 10, y: 10, width: 10, height: 10)
UIColor.white.setFill()
UIRectFill(rectangle)

let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
print("========Image size B)=======")
print(newImage!.size)
UIImageWriteToSavedPhotosAlbum(newImage!, nil, nil, nil);
Run Code Online (Sandbox Code Playgroud)

当我打印时,newImage!.size我得到1080.0,1920.0正如预期的那样。但是当我检查图片分辨率时(将其导入到我的Mac后)它是3240.0, 5760.0。为什么真实(导入)图像分辨率与实际不同newImage!.size

Ash*_*lls 5

当您在 处创建时scale = 0,您将以设备的主屏幕比例保存图像 - 在您的情况下为 3 倍。

您正在创建一个 1080x1920点@3x的图像- 即 3240 x 5760像素

如果您希望最终图像为 1080x1920,请使用scale = 1