2

新しい 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 は、画面に表示される Image View です。

4

1 に答える 1

1

Appleのサイトでこのフィルターを見つけて、私がやろうとしていることには完璧だと思いましたが、それに関する情報はほとんどなく、この質問は私が見つけることができる唯一の参照です。

それで、長い間それをいじった後、私はそれを機能させました。

基本的に、あなたは正しい道を進んでいましたが、設定する値がさらにあり、最終結果を保持するのに十分なUIImage特定のものを作成する必要があります。CGRect

size以下は、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) が、私はさまざまな変数を明確な方法でいじろうとしていました。

于 2013-10-24T14:49:10.737 に答える