Travailler avec les images en Swift (iOS/macOS) : guide complet

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)

Dans cet article, nous examinerons les principales approches et outils pour travailler avec les images dans l'écosystème Apple. Vous apprendrez à charger, afficher, traiter et enregistrer des images à l'aide des frameworks intégrés Swift pour iOS et macOS. Ce contenu sera utile aussi bien aux débutants qu'aux développeurs expérimentés.



Frameworks principaux pour travailler avec les images

Dans Swift, il existe plusieurs frameworks clés pour travailler avec les graphismes :

  • UIKit (iOS) — UIImage, UIImageView
  • AppKit (macOS) — NSImage, NSImageView
  • Core Image — filtres et traitement
  • Core Graphics — dessin de bas niveau
  • Metal — accélération GPU pour les opérations complexes
  • SwiftUI — interface déclarative avec Image


Chargement et affichage des images

Examinons des exemples de base pour les deux plateformes.



iOS (UIKit)

import UIKit

// Chargement depuis les assetslet image = UIImage(named: "example")

// Chargement depuis un fichierif let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = UIImage(contentsOfFile: path)}

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


macOS (AppKit)

import AppKit

// Chargement depuis les assetslet image = NSImage(named: "example")

// Chargement depuis un fichierif let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = NSImage(contentsOfFile: path)}

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


SwiftUI (multi-plateforme)

import SwiftUI

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


Traitement des images avec Core Image

Core Image fournit plus de 200 filtres intégrés pour le traitement d'images. Voici un exemple d'application de sépia :



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)}


Redimensionnement et recadrage

Il est souvent nécessaire de redimensionner une image ou de la recadrer au centre :



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)    }}


Enregistrement des images

Voyons comment enregistrer une image dans la galerie ou dans un fichier :

Recommendations