我正在试用新的 CIFilter,CIStarShineGenerator .
但是输出的图片是空白的,如何判断是否正常生成?
CIColor *blue = [CIColor colorWithString:@"0.1 0.5 0.8 1.0"];
CIFilter *filter = [CIFilter filterWithName:@"CIStarShineGenerator" keysAndValues:@"inputColor", blue, nil];
CIImage *outputImage = [filter outputImage];
UIImage *image = [UIImage imageWithCIImage:outputImage];
_imageView.image = image;
imageView 是显示在屏幕上的 ImageView 。
最佳答案
我在 Apple 的网站上找到了这个过滤器,并认为它非常适合我正在尝试做的事情,但几乎没有关于它的信息,这个问题是我在 SO 上唯一能找到的引用。
所以在弄乱了很长时间之后,我让它工作了。
基本上您是在正确的道路上,但有更多的值需要设置,您必须创建一个具有特定 CGRect
的 UIImage
足以保存最终结果。
以下可能会实现您想要做的事情,使用 10x10 像素的星星(大小
基本上是半径)。
CGFloat size = 5;
CIFilter *filter = [CIFilter filterWithName:@"CIStarShineGenerator"];
CIColor *blue = [[CIColor alloc] initWithColor:[UIColor colorBlue]];
[filter setDefaults];
[filter setValue:[NSNumber numberWithFloat:size/2] forKey:@"inputRadius"];
[filter setValue:[NSNumber numberWithFloat:1] forKey:@"inputCrossWidth"];
[filter setValue:[NSNumber numberWithFloat:2] forKey:@"inputCrossScale"];
[filter setValue:blue forKey:@"inputColor"];
[filter setValue:[CIVector vectorWithX:size Y:size] forKey:@"inputCenter"];
CIImage *outputImage = [filter valueForKey:@"outputImage"];
CIContext *context = [CIContext contextWithOptions:nil];
CGFloat UIImageOriginX = 0;
CGFloat UIImageOriginY = 0;
CGFloat UIImageSizeWidth = size * 2;
CGFloat UIImageSizeHeight = size * 2;
UIImage *image = [UIImage imageWithCGImage:[context createCGImage:outputImage fromRect:CGRectMake(UIImageOriginX, UIImageOriginY, UIImageSizeWidth, UIImageSizeHeight)]];
_imageView.image = image;
上面的一些内容有点矫枉过正(您可以直接定义内联的 CGRect
大小)但我试图以一种清晰的方式处理各种变量。
关于iphone - 如何使用CIStarShineGenerator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13623981/