2015-08-15 94 views
0

我使用此功能:如何在合并图像时避免低质量?

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,合并)图像: image

+0

好吧,你明确地把它做成320x358像素......你想让它如此之小吗?源图像如此之小? –

回答

4

您应该使用UIGraphicsBeginImageContextWithOptions,并通过在0刻度使用的0原因的比例是当前的设备屏幕的规模相匹配。 (视网膜设备的视网膜)

随着电话UIGraphicsBeginImageContext,你迫使输出图像是非视网膜。在视网膜设备(除iPad 2之外的所有设备)上,您的分辨率会降低一半。这可能是你的问题的原因。

As @ Daij-Djan在他的评论中指出,你正在创造一个非常小的图像。一旦修复了开始图像上下文调用,如果您有更大的输出图像,则可能需要设置更大的图像上下文。

相关问题