【问题标题】:How to avoid low quality when merging images?合并图像时如何避免低质量?
【发布时间】:2015-08-15 10:31:36
【问题描述】:

我正在使用这个功能:

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,合并)图像的屏幕:

【问题讨论】:

  • 好吧,您明确地将其设为 320x358 像素...您希望它这么小吗?源图像这么小吗?

标签: ios swift uiimage core-graphics


【解决方案1】:

您应该使用UIGraphicsBeginImageContextWithOptions,并传入0 的比例。使用0 的比例会使其与当前设备屏幕的比例相匹配。 (Retina 用于视网膜设备)

通过调用UIGraphicsBeginImageContext,您将强制输出图像为非视网膜图像。在视网膜设备(除 iPad 2 之外的所有当前设备)上,您会损失一半的分辨率。这可能是您的问题的原因。

正如@Daij-Djan 在他的评论中指出的那样,您正在创建一个非常小的图像。修复开始图像上下文调用后,如果您有更大的输出图像,您可能希望设置更大的图像上下文。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2014-10-14
    • 2019-08-23
    • 2021-06-16
    • 2014-12-24
    • 2017-08-03
    • 1970-01-01
    相关资源
    最近更新 更多