ios - 如何创建有限的 CIImage?

标签 ios core-image cgimage cifilter cgimageref

CIColorMap CIFilterCIImage 作为输入。使用另一个 CIFilter (例如 CILinearGradient)动态生成输入图像是有意义的,但向颜色图过滤器提供过滤器的结果将导致以下错误,例如以下内容:

[CIColorMap outputImage] requires the inputGradientImage to be finite

即使渐变的起点/终点被指定为 CILinearGradient 滤波器的输入,图像本身也不是有限的。如何生成有限的 CIImage 来传递给我的过滤器?

最佳答案

以下示例展示了如何创建固定大小的 CIImage 以用作另一个 CIFilter 的输入:

CGFloat gradientSize = 100.f;         
CIFilter *gradientFilter = [CIFilter filterWithName:@"CISmoothLinearGradient"];
[gradientFilter setValue:[CIVector vectorWithX:0 Y:0] forKey:@"inputPoint0"];
[gradientFilter setValue:[CIVector vectorWithX:gradientSize Y:0] forKey:@"inputPoint1"];
[gradientFilter setValue:[CIColor colorWithCGColor:[[UIColor cyanColor] CGColor]] forKey:@"inputColor0"];
[gradientFilter setValue:[CIColor colorWithCGColor:[[UIColor magentaColor] CGColor]] forKey:@"inputColor1"];
CIImage *gradientImage = [[gradientFilter outputImage] imageByCroppingToRect:CGRectMake(0, 0, gradientSize, 1)];

// Other filter to receive cropped gradientImage
CIFilter *gradientMapFilter = [CIFilter filterWithName:@"CIColorMap"];
[gradientMapFilter setValue:gradientImage forKey:@"inputGradientImage"];

关于ios - 如何创建有限的 CIImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774217/

相关文章:

ios - 为什么使用 kCGImagePropertyGIFDelayTime 不会减慢 GIF 速度

ios - 覆盖 AVMetadataMachineReadableCodeObject 的 stringValue 属性或创建输出二进制数据的替代方法

ios - 在 Swift 中为 Bonjour NetService 创建 TXT 记录

ios - 如何用 Swift 来平均五幅图像?

ios - 输入图像=零: Filtered Image not displaying?

swift - 如何裁剪和翻转 CVPixelBuffer 并返回 CVPixelBuffer?

ios - MTLTexture 与 CGImageRef

ios - 已编译的 iOS 应用程序 ( IPA ) 中的内容加密

ios - ABAddressBook 规范化电话号码

ios - 自定义 CIKernel 和 iOS7