合并图像时如何避免低质量?
How to avoid low quality when merging images?
我正在使用这个功能:
var size = CGSize(width: 320, height: 358) // 348
UIGraphicsBeginImageContext(size)
//let areaSize = CGRect(x: 0, y: 0, width: size.width, height: size.height)
let areaSize = CGRect(x: 20, y: 5, width: size.width-40, height: size.height-30)
let areaSizeTop = CGRect(x: 0, y: 0, width: size.width, height: size.height)
bottomImage.drawInRect(areaSize)
topImage.drawInRect(areaSizeTop, blendMode: kCGBlendModeNormal, alpha: 1) //0.8 default
var newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
合并两个不同的图像 (A) + (B),但是当我这样做时,最终图像 (C) 的质量非常低,我该如何解决?是否需要编写一些代码来使 (C) 图像看起来更好?这是(C,合并)图像的屏幕:
您应该使用 UIGraphicsBeginImageContextWithOptions
,并传入 0 比例。使用 0 比例会使其与当前设备屏幕的比例相匹配。 (视网膜设备的视网膜)
通过调用 UIGraphicsBeginImageContext
,您强制输出图像为非视网膜图像。在 Retina 设备上(除 iPad 2 之外的所有当前设备),您将失去一半的分辨率。这可能是您遇到问题的原因。
正如@Daij-Djan 在他的评论中指出的那样,您正在创建一个非常小的图像。一旦修复了开始图像上下文调用,如果您有更大的输出图像,您可能想要设置更大的图像上下文。
我正在使用这个功能:
var size = CGSize(width: 320, height: 358) // 348
UIGraphicsBeginImageContext(size)
//let areaSize = CGRect(x: 0, y: 0, width: size.width, height: size.height)
let areaSize = CGRect(x: 20, y: 5, width: size.width-40, height: size.height-30)
let areaSizeTop = CGRect(x: 0, y: 0, width: size.width, height: size.height)
bottomImage.drawInRect(areaSize)
topImage.drawInRect(areaSizeTop, blendMode: kCGBlendModeNormal, alpha: 1) //0.8 default
var newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
合并两个不同的图像 (A) + (B),但是当我这样做时,最终图像 (C) 的质量非常低,我该如何解决?是否需要编写一些代码来使 (C) 图像看起来更好?这是(C,合并)图像的屏幕:
您应该使用 UIGraphicsBeginImageContextWithOptions
,并传入 0 比例。使用 0 比例会使其与当前设备屏幕的比例相匹配。 (视网膜设备的视网膜)
通过调用 UIGraphicsBeginImageContext
,您强制输出图像为非视网膜图像。在 Retina 设备上(除 iPad 2 之外的所有当前设备),您将失去一半的分辨率。这可能是您遇到问题的原因。
正如@Daij-Djan 在他的评论中指出的那样,您正在创建一个非常小的图像。一旦修复了开始图像上下文调用,如果您有更大的输出图像,您可能想要设置更大的图像上下文。