Arbeiten mit Bildern in Swift (iOS/macOS)
In diesem Artikel betrachten wir detailliert die Arbeit mit Bildern in Swift für die Plattformen iOS und macOS. Sie erfahren, wie Sie Bilder mit den integrierten Apple-Frameworks UIKit (iOS), AppKit (macOS) und Core Image 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
Im Apple-Ökosystem gibt es mehrere Möglichkeiten, mit Bildern zu arbeiten. Die wichtigsten sind:
- UIKit (iOS/tvOS) —
UIImage,UIImageView - AppKit (macOS) —
NSImage,NSImageView - Core Image — leistungsstarkes Framework zur Bildverarbeitung (Filter, Transformationen)
- SwiftUI —
Imagefür deklarative Darstellung
Bilder laden in iOS (UIKit)
Der einfachste Weg, ein Bild in iOS zu laden, ist die Verwendung von UIImage. Beispiel für das Laden aus Assets und aus einer Datei:
// Laden aus Assets.xcassetslet imageFromAssets = UIImage(named: "myImage")
// Laden aus einer Datei im Bundleif let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = UIImage(contentsOfFile: path)}
// Laden aus Dataif let data = try? Data(contentsOf: URL(string: "https://example.com/image.png")!) { let imageFromData = UIImage(data: data)}Bilder anzeigen in UIKit
Zur Anzeige eines Bildes wird UIImageView verwendet:
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))imageView.image = UIImage(named: "example")imageView.contentMode = .scaleAspectFitview.addSubview(imageView)Arbeiten mit Bildern in macOS (AppKit)
In macOS werden NSImage und NSImageView verwendet:
// Bild ladenlet nsImage = NSImage(named: "macImage")
// Anzeigenlet imageView = NSImageView(frame: NSRect(x: 0, y: 0, width: 300, height: 200))imageView.image = nsImageimageView.imageScaling = .scaleProportionallyUpOrDownview.addSubview(imageView)Bildverarbeitung mit Core Image
Core Image bietet Dutzende integrierter Filter. Betrachten wir grundlegende Operationen:
import CoreImage
// Erstellen eines CIImage aus UIImageguard let uiImage = UIImage(named: "input"), let ciImage = CIImage(image: uiImage) else { return }
// Anwenden des Filters "Gaußscher Weichzeichner"let filter = CIFilter(name: "CIGaussianBlur")filter?.setValue(ciImage, forKey: kCIInputImageKey)filter?.setValue(10.0, forKey: kCIInputRadiusKey)
// Ergebnis abrufenguard let outputImage = filter?.outputImage else { return }
// Zurückkonvertieren in UIImagelet context = CIContext(options: nil)if let cgImage = context.createCGImage(outputImage, from: outputImage.extent) { let blurredImage = UIImage(cgImage: cgImage)}Beliebte Core Image Filter
CISepiaTone— SepiaCIPhotoEffectMono— Schwarz-Weiß-EffektCIVignette— VignettierungCIColorControls— Helligkeit, Kontrast, SättigungCICrop— Bild zuschneiden
Arbeiten mit Bildern in SwiftUI
SwiftUI bietet eine einfache und deklarative Möglichkeit, mit Bildern zu arbeiten:
import SwiftUI
struct ContentView: View { var body: some View { Image("swiftui_image") .resizable() .scaledToFit() .frame(width: 200, height: 200) .clipShape(Circle()) .overlay(Circle().stroke(Color.blue, lineWidth: 4)) .shadow(radius: 10) }} Auch in der Bibliothek
GraphQL auf Node.js: Vollständiger Leitfaden zur Bibliothek graphql-http
Caching in PHP: Redis, Memcached und integrierte Lösungen
Arbeit mit XML in Rust: Bibliotheken roxmltree, quick-xml und serde-xml-rs
Arbeit mit Kafka in JavaScript (Node.js): Bibliothek node-rdkafka