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

Sam*_*Sam 4 scale image-resizing ios uigraphicscontext swift

我曾经使用以下代码调整图像大小,并且它曾经在比例因子上工作得很好.现在使用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)
Run Code Online (Sandbox Code Playgroud)

例如,如果我在iPhone 5上截取屏幕截图,图像大小将为320*568.我以前用相同的代码得到640*1136 ..什么可能导致比例因子不被应用?

当我打印图像的比例时,它将根据设备分辨率打印1,2或3,但不会应用于从上下文拍摄的图像.

ron*_*nan 5

scaledImage!.size 不会以像素为单位返回图像大小.

CGImageGetWidthCGImageGetHeight返回相同的大小(以像素为单位)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
Run Code Online (Sandbox Code Playgroud)