我有一张图像,我用它来创建一个立体图,方法是将它分成单独的红色和青色版本,并在它们之间设置视差。
源图像为 1146 x 580(视网膜分辨率)。我正在使用 CIColorMatrix 创建每个图像。这是删除所有红色的青色版本的代码。
-(UIImage *)createCyan:(UIImage *)anImage
{
CIImage *inputImage = [CIImage imageWithCGImage:anImage.CGImage];
CIFilter *matrixFilter = [CIFilter filterWithName:@"CIColorMatrix"];
[matrixFilter setDefaults];
[matrixFilter setValue:inputImage forKey:kCIInputImageKey];
[matrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:0] forKey:@"inputRVector"];
[matrixFilter setValue:[CIVector vectorWithX:0 Y:1 Z:0 W:0] forKey:@"inputGVector"];
[matrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:1 W:0] forKey:@"inputBVector"];
[matrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:1] forKey:@"inputAVector"];
CIImage *outputImage = [matrixFilter outputImage];
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
return [UIImage imageWithCGImage:cgimg];
}
问题是这需要一秒钟的时间来处理。我需要找到一种更快的方法(如果存在的话)来完成同样的事情。
有没有更好的方法?