2015-08-15 60 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在他的評論中指出,你正在創造一個非常小的圖像。一旦修復了開始圖像上下文調用,如果您有更大的輸出圖像,則可能需要設置更大的圖像上下文。