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 以像素为单位的图像大小。
CGImageGetWidth
和 CGImageGetHeight
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
我曾经使用以下代码调整图像大小,它过去在比例因子方面工作得很好。现在 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 以像素为单位的图像大小。
CGImageGetWidth
和 CGImageGetHeight
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