Я пытаюсь использовать фильтр 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
, но тогда мне придется извлечь маску и добавить сложности. ..