2016-05-03 5 views
0

Ich möchte ein Bild mit einer blauen Farbe unter Verwendung des CIScreenBlendMode Filters mischen.Anwenden des CIScreenBlendMode-Filters

Dafür verwende ich den folgenden Code:

-(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; 

} 

Diese Methode meiner app Absturz macht und ich weiß nicht, warum.

In seiner Dokumentation von Apple heißt es folgende Parameter für CIScreenBlendMode:

inputImage | Ein CIImage-Objekt, dessen Anzeigename Image lautet.

inputBackgroundImage | Ein CIImage-Objekt, dessen Anzeigename Hintergrundbild ist.

Ich denke, das ist genau das, was ich anbiete.

Als ich CIScreenBlendMode mit CIMultiplyCompositing, dieser Code in Ordnung ersetzen läuft.

Vielleicht können einige von Ihnen den Fehler erkennen, den ich mache?

Antwort

0

Ich fand die Antwort hier: Using a CIImage from CIColor in a CIFilter: getting empty image.

Als user578205 heißt es:

Sie sollten das erzeugte Bild auf beginImage Größe zuzuschneiden, weil Größe unendlich ist das erzeugte Bild. Ich weiß nicht, warum, aber CIOverlayBlendMode ist nicht tolerant zu unendlicher Größe

Und in gewisser Weise ist es sinnvoll: Wie könnten Sie ausrichten zwei Bilder, von denen einer der unendlichen Größe?

Verwandte Themen