Swift: UIGraphicsBeginImageContextWithOptions 比例因子设置为 0 但未应用

Swift: UIGraphicsBeginImageContextWithOptions scale factor set to 0 but not applied

我曾经使用以下代码调整图像大小,它过去在比例因子方面工作得很好。现在 Swift 3 我不明白为什么不考虑比例因子。图像已调整大小但未应用比例因子。你知道为什么吗?

let layer = self.imageview.layer

UIGraphicsBeginImageContextWithOptions(layer.bounds.size, true, 0)

layer.render(in: UIGraphicsGetCurrentContext()!)
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

print("SCALED IMAGE SIZE IS \(scaledImage!.size)")
print(scaledImage!.scale)

例如,如果我在 iPhone 5 上截屏,图像大小将为 320*568。我曾经使用完全相同的代码获得 640*1136。什么会导致不应用比例因子?

当我打印图像的比例时,它会根据设备分辨率打印 1、2 或 3,但不会应用于从上下文中获取的图像。

scaledImage!.size 不会 return 以像素为单位的图像大小。

CGImageGetWidthCGImageGetHeight return 大小相同(以像素为单位) 即image.size * image.scale

如果你想测试一下,首先你必须import CoreGraphics

let imageSize = scaledImage!.size //(320,568)
let imageWidthInPixel = CGImageGetWidth(scaledImage as! CGImage) //640
let imageHeightInPixel = CGImageGetHeight(scaledImage as! CGImage) //1136