所以我试图从图像中删除 alpha 通道。我想我会尝试 CIColorMatrix。现在,事情就是这样。 filter
是以前(成功)应用的过滤器。下面的代码就像你想象的那样工作:
ciImage = [filter valueForKey:kCIOutputImageKey];
filter = [CIFilter filterWithName:@"CIColorMatrix"];
[filter setValue:ciImage forKey:kCIInputImageKey];
[filter setValue:[CIVector vectorWithX:1 Y:0 Z:0 W:0] forKey:@"inputRVector"];
[filter setValue:[CIVector vectorWithX:0 Y:1 Z:0 W:0] forKey:@"inputGVector"];
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:1 W:0] forKey:@"inputBVector"];
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:0.75] forKey:@"inputAVector"];
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:0.0] forKey:@"inputBiasVector"];
image = [UIImage imageWithCIImage:[filter valueForKey:kCIOutputImageKey]];
它将 alpha 乘以 0.75。但是,如果我将 alpha 偏差更改为 0.01:
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:0.01] forKey:@"inputBiasVector"];
生成的 CIImage 具有荒谬性extent
,例如近似(-1.7e38, -1.7e38), (3.4e38 x 3.4e38)
。我没有尝试重新定位它以查看实际图像是否正确。
任何人都知道为什么会发生这种情况,以及如何解决它?