CIGaussianBlur Bildgröße

8

Hey, ich möchte meine Sicht verwischen, und ich benutze diesen Code:

%Vor%

Und es verschwimmt die Aussicht, aber nicht alles. Wie kann ich alle Ansichten verwischen?

    
user3093252 11.12.2013, 23:14
quelle

3 Antworten

17

Das Problem ist nicht, dass nicht das gesamte Bild verwischt wird, sondern dass die Unschärfe die Grenze des Bildes erweitert, wodurch das Bild größer wird und es dadurch nicht richtig ausgerichtet wird.

Um das Bild nach der Zeile gleich groß zu halten:

%Vor%

Sie können die CGRect für ein Rechteck von der Größe des Originalbildes in der Mitte dieses resultImage :

verwenden %Vor%

Und dann CIContext verwenden, um diesen Teil des Bildes zu erfassen:

%Vor%

Alternativ können Sie für iOS 7 unter iOS UIImageEffects-Beispielcode und download iOS_UIImageEffects.zip , dann kannst du die UIImage+ImageEffects -Kategorie nehmen. Wie auch immer, das bietet ein paar neue Methoden:

%Vor%

Also, um es zu verwischen und es zu beleuchten (mit diesem "Milchglas" -Effekt), kannst du folgendes tun:

%Vor%

Interessanterweise verwendet Apples Code CIFilter nicht, sondern ruft vImageBoxConvolve_ARGB8888 von vImage Hochleistungs-Bildverarbeitungs-Framework . Diese Technik wird im WWDC-2013-Video Implementierungs-Benutzeroberfläche auf iOS veranschaulicht.

    
Rob 12.12.2013, 02:17
quelle
3

Eine schnellere Lösung besteht darin, CGImageRef vollständig zu vermeiden und alle Transformationen auf CIImage Lazy Level durchzuführen.

Also, statt unpassend:

%Vor%

Eine nette Lösung ist zu schreiben:

Ziel-C

%Vor%

Schnell 3

%Vor%

Schnell 4

%Vor%     
Cœur 12.09.2017 07:57
quelle
0

Es sieht so aus, als ob der Unschärfe-Filter Ihnen ein Bild zurückgibt, das größer ist als das, mit dem Sie begonnen haben, was sinnvoll ist, da Pixel an den Kanten hinter ihnen verschwimmen. Die einfachste Lösung wäre wahrscheinlich,% newView eine contentMode von UIViewContentModeCenter zu verwenden, damit das verschwommene Bild nicht unterdrückt wird. Sie könnten auch blurredImage zuschneiden, indem Sie sie in die Mitte eines neuen Kontexts mit der entsprechenden Größe zeichnen, aber das müssen Sie nicht wirklich.

    
Noah Witherspoon 11.12.2013 23:19
quelle

Tags und Links