Arbeiten mit Bildern in Swift: Vollständiger Leitfaden für iOS und macOS

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Bildern in Swift (iOS/macOS)



Das Arbeiten mit Bildern ist eine der Kernaufgaben bei der Entwicklung von mobilen und Desktop-Anwendungen. In Swift für iOS und macOS gibt es zahlreiche integrierte Werkzeuge zum Laden, Anzeigen, Verarbeiten und Speichern von Bildern. In diesem Artikel betrachten wir ausführlich die grundlegenden Ansätze und APIs, die Ihnen helfen, effizient mit Grafiken auf Apple-Plattformen zu arbeiten.



Grundlegende Klassen für die Arbeit mit Bildern

Je nach Plattform werden unterschiedliche Klassen verwendet:

  • iOS/tvOS/watchOS — UIImage (UIKit)
  • macOS — NSImage (AppKit)

Beide Klassen bieten ähnliche Funktionen, unterscheiden sich jedoch in der API. Für die plattformübergreifende Entwicklung können gemeinsame Protokolle oder Erweiterungen verwendet werden.



Bilder laden

Der einfachste Weg ist das Laden eines Bildes aus den App-Ressourcen:

// iOSlet image = UIImage(named: "example")

// macOSlet image = NSImage(named: "example")

Für das Laden aus dem Netz verwenden Sie URLSession:

guard let url = URL(string: "https://example.com/image.jpg") else { return }

URLSession.shared.dataTask(with: url) { data, response, error in guard let data = data, error == nil else { return } DispatchQueue.main.async { // iOS let image = UIImage(data: data) // macOS let image = NSImage(data: data) }}.resume()


Bilder anzeigen

Zur Anzeige von Bildern auf dem Bildschirm werden die entsprechenden View-Komponenten verwendet:

  • iOS — UIImageView
  • macOS — NSImageView
// iOSlet imageView = UIImageView(image: UIImage(named: "photo"))imageView.contentMode = .scaleAspectFit

// macOSlet imageView = NSImageView(image: NSImage(named: "photo"))imageView.imageScaling = .scaleProportionallyUpOrDown


Bildverarbeitung mit Core Image

Core Image ist ein leistungsstarkes Framework zum Filtern und Verarbeiten von Bildern. Betrachten wir ein grundlegendes Beispiel zur Anwendung eines Filters:

import CoreImage

func applyFilter(to inputImage: CIImage) -> CIImage? { guard let filter = CIFilter(name: "CISepiaTone") else { return nil } filter.setValue(inputImage, forKey: kCIInputImageKey) filter.setValue(0.8, forKey: kCIInputIntensityKey) return filter.outputImage}

// Verwendunglet originalImage = CIImage(image: UIImage(named: "photo")!)!if let filteredImage = applyFilter(to: originalImage) { let context = CIContext() let cgImage = context.createCGImage(filteredImage, from: filteredImage.extent) let resultImage = UIImage(cgImage: cgImage!)}

Beliebte Core Image Filter:

  • CISepiaTone — Sepia
  • CIGaussianBlur — Gaußsche Unschärfe
  • CIColorControls — Einstellung von Helligkeit, Kontrast, Sättigung
  • CIVignette — Vignettierung


Arbeiten mit Pixeln und CGImage

Für die Arbeit auf niedriger Ebene mit Pixeldaten verwenden Sie CGImage aus Core Graphics:

func pixelColors(from image: UIImage) -> [[UIColor]]? {    guard let cgImage = image.cgImage else { return nil }    let width = cgImage.width    let height = cgImage.height        let colorSpace = CGColorSpaceCreateDeviceRGB()    let bytesPerPixel = 4    let bytesPerRow = bytesPerPixel * width    let bitsPerComponent = 8    var pixelData = [UInt8](repeating: 0, count: width * height * bytesPerPixel)        guard let context = CGContext(data: &pixelData,                                  width: width,                                  height: height,                                  bitsPerComponent: bitsPerComponent,                    

Empfehlungen