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?
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
:
Und dann CIContext
verwenden, um diesen Teil des Bildes zu erfassen:
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:
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.
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.
Tags und Links objective-c ios blur core-image