2011-10-30 66 views
1

我一直在尋找這個答案一段時間。但我一直無法找到它。平均多個UIImages

我想平均30個UIimages的像素。爲此,我想使用Quartz2D來代替所有圖像的所有像素。對我而言,爲了將30幅圖像畫在一起,我應該將每個圖像的alpha通道調整爲1/30。然後,在另一個之上畫一個我會得到所需的效果。

所需的式應爲:站Dest Px的=(IMG [0] + .PX .... IMG [29] .PX)/ 30

我試圖實現它使用imageContext和共混所述圖像加上沒有運氣:

UIGraphicsBeginImageContext(CGSizeMake(sz.width, sz.height)); 

for (int i=0; i<30; i++) { 

    UIImage* img = [self.delegate requestImage:self at:i]; 

    CGPoint coord = [self.delegate requestTranslation:self at:i]; 

    [img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1/30]; 

} 

UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

我怎麼能得到許多UIimages的平均圖像? 我也嘗試添加一個圖像與許多sublayers,但我也得到沖洗圖像。

謝謝!

回答

1

嘗試改變下列:

[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1/30]; 

[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1.0/30.0]; 

1/30(使用整數值)== 0,所以你可以繪製圖像完全透明的。通過添加.0,您明確表示您需要CGFloat

+1

謝謝,我發現了這個問題。 我需要升級混合:將alpha 1.0應用於第一個圖像,將0.5應用於第二個,將0.33應用於第三個,依此類推。這是因爲混合應用於背景。 – user1021161