UIimage 大小与实际图像分辨率不同 (UIImageWriteToSavedPhotosAlbum)
UIimage size is different from real image resolution (UIImageWriteToSavedPhotosAlbum)
我正在从 ARFrame 获取图像并将其转换为 UIImage (imageToSave
)。
var imageToSave = convert(cmage:arFrameImage)
UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
我保存到 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);
当我打印 newImage!.size
时,我得到 1080.0, 1920.0 正如预期的那样。但是当我检查图片分辨率时(将其导入我的 Mac 后)它是 3240.0, 5760.0。为什么真实(导入的)图像分辨率与 newImage!.size
不同?
当您在 scale = 0
创建时,您将以设备的主屏幕比例保存图像 - 在您的情况下为 3 倍。
您正在创建 1080x1920 点 @3x 的图像 - 即 3240 x 5760 像素
如果您希望最终图像为 1080x1920,请使用 scale = 1
我正在从 ARFrame 获取图像并将其转换为 UIImage (imageToSave
)。
var imageToSave = convert(cmage:arFrameImage)
UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
我保存到 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);
当我打印 newImage!.size
时,我得到 1080.0, 1920.0 正如预期的那样。但是当我检查图片分辨率时(将其导入我的 Mac 后)它是 3240.0, 5760.0。为什么真实(导入的)图像分辨率与 newImage!.size
不同?
当您在 scale = 0
创建时,您将以设备的主屏幕比例保存图像 - 在您的情况下为 3 倍。
您正在创建 1080x1920 点 @3x 的图像 - 即 3240 x 5760 像素
如果您希望最终图像为 1080x1920,请使用 scale = 1