Arbeiten mit Bildern in Swift (iOS/macOS): Vollständiger Leitfaden

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)

In diesem Artikel betrachten wir die grundlegenden Ansätze und Werkzeuge für die Arbeit mit Bildern im Apple-Ökosystem. Sie erfahren, wie Sie Bilder mit den integrierten Swift-Frameworks für iOS und macOS laden, anzeigen, verarbeiten und speichern. Das Material ist sowohl für Anfänger als auch für erfahrene Entwickler nützlich.



Wichtige Frameworks für die Arbeit mit Bildern

In Swift gibt es mehrere wichtige Frameworks für die Arbeit mit Grafiken:

  • UIKit (iOS) — UIImage, UIImageView
  • AppKit (macOS) — NSImage, NSImageView
  • Core Image — Filter und Verarbeitung
  • Core Graphics — Zeichnen auf niedriger Ebene
  • Metal — GPU-Beschleunigung für komplexe Operationen
  • SwiftUI — deklarative Oberfläche mit Image


Laden und Anzeigen von Bildern

Betrachten wir grundlegende Beispiele für beide Plattformen.



iOS (UIKit)

import UIKit

// Laden aus Assetslet image = UIImage(named: "example")

// Laden aus Dateiif let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = UIImage(contentsOfFile: path)}

// Anzeigen in UIImageViewlet imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))imageView.image = imageimageView.contentMode = .scaleAspectFit


macOS (AppKit)

import AppKit

// Laden aus Assetslet image = NSImage(named: "example")

// Laden aus Dateiif let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = NSImage(contentsOfFile: path)}

// Anzeigen in NSImageViewlet imageView = NSImageView(frame: NSRect(x: 0, y: 0, width: 200, height: 200))imageView.image = imageimageView.imageScaling = .scaleProportionallyUpOrDown


SwiftUI (plattformübergreifend)

import SwiftUI

struct ContentView: View { var body: some View { Image("example") .resizable() .aspectRatio(contentMode: .fit) .frame(width: 200, height: 200) }}


Bildverarbeitung mit Core Image

Core Image bietet über 200 integrierte Filter zur Bildverarbeitung. Hier ist ein Beispiel für die Anwendung von Sepia:



import CoreImage

func applySepiaFilter(to image: UIImage) -> UIImage? { guard let ciImage = CIImage(image: image) else { return nil } let filter = CIFilter(name: "CISepiaTone") filter?.setValue(ciImage, forKey: kCIInputImageKey) filter?.setValue(0.8, forKey: kCIInputIntensityKey) guard let outputImage = filter?.outputImage else { return nil } let context = CIContext() guard let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil } return UIImage(cgImage: cgImage)}


Größenänderung und Zuschneiden

Häufig ist es erforderlich, die Bildgröße zu ändern oder es mittig zuzuschneiden:



extension UIImage {    func resized(to targetSize: CGSize) -> UIImage {        let renderer = UIGraphicsImageRenderer(size: targetSize)        return renderer.image { _ in            self.draw(in: CGRect(origin: .zero, size: targetSize))        }    }        func croppedToSquare() -> UIImage {        let side = min(size.width, size.height)        let x = (size.width - side) / 2        let y = (size.height - side) / 2        let cropRect = CGRect(x: x, y: y, width: side, height: side)                guard let cgImage = cgImage?.cropping(to: cropRect) else { return self }        return UIImage(cgImage: cgImage)    }}


Speichern von Bildern

Betrachten wir, wie Sie ein Bild in der Galerie oder in einer Datei speichern:

Empfehlungen