2011-10-30 1 views
1

저는 잠시 동안이 해답을 찾고 있습니다. 그러나 나는 그것을 발견 할 수 없었다.여러 UIImages를 평균합니다.

30 개의 이미지를 평균화하고 싶습니다. 그렇게하기 위해, 나는 모든 이미지의 모든 픽셀을 조사하는 대신 Quartz2D를 사용하여 그것을하고 싶다. 30 개의 이미지를 함께 그리기 위해서는 각각의 알파 채널을 1/30로 조정해야합니다. 그런 다음 다른 하나 위에 그림을 그려서 원하는 효과를 얻습니다.

원하는 화학식은 다음과 같아야 신지 PX = (IMG [0] .px + .... IMG [29] .px) I는 이미지 imageContext를 사용하여 블렌딩을 달성하려고 노력/30

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의 평균 이미지를 얻을 수 있습니다 : 함께 행운과 함께? 많은 하위 레이어가있는 이미지를 추가하려고 시도했지만 이미지가 씻겨 나옵니다.

감사합니다. 다음을 변경

답변

1

시도 :

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

완전히 투명한 이미지를 그리기됩니다, 그래서 == 0 (정수 값을 사용하여)

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

1/30

합니다. .0을 추가하면 CGFloat이 필요하다는 것을 분명히합니다.

+1

감사합니다. 문제가 발견되었습니다. 첫 번째 이미지에 알파 1.0을 적용하고 두 번째 이미지에 0.5를 적용하고 세 번째 이미지에 0.33을 적용하는 등 확대 된 블렌딩이 필요했습니다. 블렌드가 배경에 적용되기 때문입니다. – user1021161