NSImage & CIGaussianBlur: Wie kann ich ein CIImage im NSImageView anzeigen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NSImage & CIGaussianBlur: Wie kann ich ein CIImage im NSImageView anzeigen?

    Ich möchte ein NSImage unscharf machen. Dass das nicht direkt geht, weiß ich mittlerweile - es braucht einen Filter, den ich mit Core Image hinzufügen wollte:

    Quellcode

    1. let beginImage = CIImage(data: responseData)
    2. let filter = CIFilter(name: "CIGaussianBlur")
    3. filter.setValue(beginImage, forKey: kCIInputImageKey)
    4. filter.setValue(0.5, forKey: kCIInputIntensityKey)


    Leider kann ich das CIImage nicht direkt in einem NSImageView anzeigen: Wie kann ich das CIImage wieder in ein NSImage verwandeln?
  • Dein Link geht leider nicht. Suche ich nach entsprechenden Beispielen, stoße ich idR auf sowas wie

    Quellcode

    1. ​NSCIImageRep *rep = [NSCIImageRep imageRepWithCIImage:ciImage];
    2. NSImage *nsImage = [[NSImage alloc] initWithSize:rep.size];
    3. [nsImage addRepresentation:rep];


    ... allerdings habe ich das Gefühl, dass sich dies nicht 1zu1 in Swift übertragen lässt, da die Methode imageRepWithCIImage zB nicht vorhanden ist.

    Grundsätzlich hast du recht: Ich brauche eigentlich nicht das Bild, sondern möchte es nur verschwommen darstellen. Heißt das, ich kann alternativ einen Filter direkt auf einen NSImageView legen?
  • Ja, allerdings musst Du den Imageview über setWantsLayer: auf die Verwendung von Layern umschalten. Den Filter übergibst Du dann an den Layer.

    Noch leichter geht es über den Interface-Builder:
    1. NSImageView anlegen und konfigurieren
    2. View Effects Inspector des Imageviews öffnen
    3. Über Content Filters Gaussian Blur hinzufügen.
    „Meine Komplikation hatte eine Komplikation.“
  • Großartiger Tipp, es direkt im Interface-Builder zu hinterlegen! Ich wusste bislang nicht, dass dies möglich ist. Vielen Dank!

    Ein Umstand gefällt mir noch nicht: Nutze ich einen blur-effect, verschwimmt auch der Rand des Bildes:


    Kann ich dies umgehen? Ich dachte daran, das Bild etwas versetzt im NSImageView darzustellen - habe aber nicht herausgefunden, wie ich die x / y Positionen bestimmen kann?
    Dateien