Travailler avec les images en Swift : guide complet pour iOS et macOS

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec les images en Swift (iOS/macOS)



Travailler avec les images est l'une des tâches clés dans le développement d'applications mobiles et de bureau. En Swift pour iOS et macOS, il existe de nombreux outils intégrés permettant de charger, afficher, traiter et enregistrer des images. Dans cet article, nous examinerons en détail les approches et API principales qui vous aideront à travailler efficacement avec les graphismes sur les plateformes Apple.



Classes principales pour travailler avec les images

Selon la plateforme, différentes classes sont utilisées :

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

Les deux classes offrent des fonctionnalités similaires, mais présentent des différences dans l'API. Pour le développement multiplateforme, vous pouvez utiliser des protocoles communs ou des extensions.



Chargement des images

La méthode la plus simple consiste à charger une image depuis les ressources de l'application :

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

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

Pour le chargement depuis le réseau, utilisez 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()


Affichage des images

Pour afficher des images à l'écran, utilisez les composants view correspondants :

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

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


Traitement des images avec Core Image

Core Image est un framework puissant pour le filtrage et le traitement des images. Voici un exemple de base d'application d'un filtre :

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}

// Utilisationlet 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!)}

Filtres Core Image populaires :

  • CISepiaTone — sépia
  • CIGaussianBlur — flou gaussien
  • CIColorControls — réglage de la luminosité, du contraste, de la saturation
  • CIVignette — vignettage


Travailler avec les pixels et CGImage

Pour un travail de bas niveau avec les données de pixels, utilisez CGImage de 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,                    

Recommendations