2016-05-03 19 views
0

CIScreenBlendModeフィルタを使用して、イメージを青色でブレンドしたいとします。そのためにCIScreenBlendModeフィルタを適用する

、私は次のコードを使用します。

-(CIImage*)makeitBlue:(CIImage*)greyImage{ 

    CIImage* outputImage = nil; 

    //create some blue 
    CIFilter* blueGenerator = [CIFilter filterWithName:@"CIConstantColorGenerator"]; 
    CIColor* blue = [CIColor colorWithString:@"0.1 0.5 0.8 1.0"]; 
    [blueGenerator setValue:blue forKey:@"inputColor"]; 
    CIImage* blueImage = [blueGenerator valueForKey:@"outputImage"]; 

    //apply a screen filter 
    CIFilter* filter = [CIFilter filterWithName:@"CIScreenBlendMode"]; 
    [filter setValue:blueImage forKey:@"inputImage"]; 
    [filter setValue:greyImage forKey:@"inputBackgroundImage"]; 
    outputImage = [filter valueForKey:@"outputImage"]; 

    return outputImage; 

} 

この方法では、私のアプリのクラッシュを行い、私は理由を知りません。

そのマニュアルではAppleがCIScreenBlendModeの次のパラメータ状態:

inputImageとし|表示名がImageのCIImageオブジェクト。

inputBackgroundImage |表示名が のCIImageオブジェクトです。

私はそれが私が提供しているものだと思います。

私はCIScreenBlendMode CIMultiplyCompositingと置き換える

、このコードは、罰金を実行しています。

多分私が作った間違いを見つけられる人がいますか?

答えて

0

私は答えをここに見つけました:Using a CIImage from CIColor in a CIFilter: getting empty image

user578205 としての状態:

生成された画像のサイズが無限であるので、あなたはbeginImageサイズに生成された画像をトリミングする必要があります。私はなぜ知らないが、 CIOverlayBlendModeは

そして、それは理にかなっている方法で、無限の大きさを許容できない:どのようにあなたは、1つの無限の大きさである2枚の画像を揃えることができますか?