CISourceOverCompositing
필터를 사용하려고하는데 벽을 때리고 있습니다.CISourceOverCompositing은 장치 및 시뮬레이터에서 다른 결과를 생성합니다.
이것은 관련 코드입니다. 마스크는 UIImage
이며 이미지 UIImage
ci_mask = [[CIImage alloc] initWithCGImage: mask.CGImage];
ctx = [CIContext contextWithOptions: nil];
compo = [CIFilter filterWithName: @"CISourceOverCompositing"];
for(int i = 0; i < images.count; i++) {
UIImage *image = [images objectAtIndex: i];
ci_base = [[CIImage alloc] initWithCGImage: image.CGImage];
[compo setDefaults];
[compo setValue: ci_mask forKey: @"inputImage"];
[compo setValue: ci_base forKey: @"inputBackgroundImage"];
result = compo.outputImage;
CGImageDestinationAddImage(
dst_ref,
[ctx createCGImage: result fromRect:result.extent],
frame_props
);
}
mask
배열 바르게 시뮬레이터 아니라 장치에 적용된 알파 채널을 포함한다. 출력은 알파 채널을 사용하여 이미지를 혼합하지 않고 겉보기에만 마스크를 표시합니다.
거의 동일한 코드를 사용하여있는 CoreGraphics API는 잘 작동합니다 (그러나 나는 다른 CIFilters을 적용 할 수 없습니다) 아마 CIBlendWithMask
를 사용하려고합니다하지만 내가 마스크를 추출하고 복잡성을 추가해야
. ..