Swift(iOS/macOS)中的图像处理:完整指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift(iOS/macOS)中的图像处理

在本文中,我们将详细探讨如何在 Swift 中为 iOS 和 macOS 平台处理图像。您将学习如何使用 Apple 的内置框架:UIKit(iOS)、AppKit(macOS)和 Core Image 来加载、显示、处理和保存图像。本材料对新手和经验丰富的开发者都很有用。



用于图像处理的主要框架

在 Apple 生态系统中,有几种处理图像的方法。主要方法如下:

  • UIKit(iOS/tvOS) — UIImage、UIImageView
  • AppKit(macOS) — NSImage、NSImageView
  • Core Image — 用于图像处理(滤镜、变换)的强大框架
  • SwiftUI — 用于声明式显示的 Image


在 iOS 中加载图像(UIKit)

在 iOS 中加载图像最简单的方法是使用 UIImage。以下是从资源目录和文件中加载的示例:

// 从 Assets.xcassets 加载let imageFromAssets = UIImage(named: "myImage")

// 从 Bundle 中的文件加载if let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = UIImage(contentsOfFile: path)}

// 从 Data 加载if let data = try? Data(contentsOf: URL(string: "https://example.com/image.png")!) { let imageFromData = UIImage(data: data)}


在 UIKit 中显示图像

使用 UIImageView 来显示图像:

let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))imageView.image = UIImage(named: "example")imageView.contentMode = .scaleAspectFitview.addSubview(imageView)


在 macOS 中处理图像(AppKit)

在 macOS 中使用 NSImage 和 NSImageView:

// 加载图像let nsImage = NSImage(named: "macImage")

// 显示let imageView = NSImageView(frame: NSRect(x: 0, y: 0, width: 300, height: 200))imageView.image = nsImageimageView.imageScaling = .scaleProportionallyUpOrDownview.addSubview(imageView)


使用 Core Image 处理图像

Core Image 提供了数十种内置滤镜。让我们看看基本操作:

import CoreImage

// 从 UIImage 创建 CIImageguard let uiImage = UIImage(named: "input"), let ciImage = CIImage(image: uiImage) else { return }

// 应用“高斯模糊”滤镜let filter = CIFilter(name: "CIGaussianBlur")filter?.setValue(ciImage, forKey: kCIInputImageKey)filter?.setValue(10.0, forKey: kCIInputRadiusKey)

// 获取结果guard let outputImage = filter?.outputImage else { return }

// 转换回 UIImagelet context = CIContext(options: nil)if let cgImage = context.createCGImage(outputImage, from: outputImage.extent) { let blurredImage = UIImage(cgImage: cgImage)}


流行的 Core Image 滤镜

  • CISepiaTone — 棕褐色
  • CIPhotoEffectMono — 黑白效果
  • CIVignette — 暗角效果
  • CIColorControls — 亮度、对比度、饱和度
  • CICrop — 裁剪图像


在 SwiftUI 中处理图像

SwiftUI 提供了一种简单且声明式的图像处理方式:

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

推荐