SwiftOpenAI图像生成实战:DALL-E与新ImageGen API创建、编辑一步到位
SwiftOpenAI图像生成实战:DALL-E与新ImageGen API创建、编辑一步到位
【免费下载链接】SwiftOpenAIThe most complete open-source Swift package for interacting with OpenAI's public API.项目地址: https://gitcode.com/gh_mirrors/sw/SwiftOpenAI
SwiftOpenAI是一个功能完整的开源 Swift 包,封装了 OpenAI 的全部公开 API。本文聚焦它的图像生成能力:从经典 DALL·E 到新的 ImageGen API(gpt-image-1),创建、编辑、变体一套接口一步到位,iOS、macOS、Linux 均可用。
🎨 为什么选择 SwiftOpenAI 做 AI 图像生成?
- 原生 Swift:
async/await风格,与 SwiftUI 无缝集成 - 一套接口覆盖三大模型:
dall-e-2、dall-e-3、gpt-image-1(新 ImageGen API) - 平滑升级:同时保留旧版 DALL·E 接口(
legacyCreateImages系列),新老代码互不干扰 - 跨平台:支持 iOS 15+、macOS 13+、watchOS 9+ 和 Linux
新版 ImageGen API 的参数定义在 CreateImageParameters.swift,是 2025 年专为gpt-image-1引入的现代化参数类型。
🚀 快速安装 SwiftOpenAI:SPM 三步接入
- Xcode 中打开项目,选择
File→Add Package Dependency - 填入仓库地址
https://gitcode.com/gh_mirrors/sw/SwiftOpenAI - 手动填写版本下限(不要接受 Xcode 默认的上限),点击
Add Package
拿到 OpenAI API Key 后,初始化服务只需一行:
import SwiftOpenAI let service = OpenAIServiceFactory.service(apiKey: "<YOUR_KEY>")⚡ 新 ImageGen API:一句话生成 AI 图片
生成图片只需三步:描述 → 建参数 → 发请求。
let params = CreateImageParameters( prompt: "A watercolor dragon-unicorn flying above snowy mountains", model: .gptImage1, // 也支持 .dallE2 / .dallE3 quality: .high, background: .transparent, // 透明背景,gpt-image-1 专属能力 outputFormat: .png, size: "1024x1024" ) let result = try await service.createImages(parameters: params) let b64 = result.data?.first?.b64Json // 解码后直接保存返回格式小知识⚠️:gpt-image-1固定返回 Base64 图片数据;dall-e-2/dall-e-3默认返回 URL,且URL 只在 60 分钟内有效,务必及时下载落盘。
🖌️ DALL·E 经典用法:legacyCreateImages 三步出图
旧版接口使用Dalle枚举,把"模型 + 尺寸"绑定在一起,从源头避免写错宽高:
let params = ImageCreateParameters( prompt: "A cute robot barista in a cozy café", model: .dalle3(.landscape), // 1792x1024 宽幅 quality: "hd", style: "vivid" ) let urls = try await service.legacyCreateImages(parameters: params) .data.map(\.url)枚举定义见 Dalle.swift,旧参数结构见 ImageCreateParameters.swift。
✂️ 图片编辑与变体:editImage 与 createImageVariations
编辑(editImage)支持"原图 + 提示词 + 可选 mask 精准修改"。CreateImageEditParameters.swift 提供了便捷构造器:iOS 直接传UIImage、macOS 直接传NSImage,无需手动转 Data:
let params = CreateImageEditParameters( image: uiImage, // PlatformImage 便捷入口 prompt: "Turn it into an oil painting", model: .gptImage1 ) let result = try await service.editImage(parameters: params)⚠️ 编辑接口只支持dall-e-2与gpt-image-1(另有gpt-image-1-mini):gpt-image-1可一次传多张图做融合编辑(png/webp/jpg,单张 < 25MB);dall-e-2只接受一张正方形 PNG(< 4MB),mask 必须与原图同尺寸。
变体(createImageVariations)传一张图即可生成"同款不同版",目前仅支持dall-e-2,参数见 CreateImageVariationParameters.swift。
📋 模型参数速查表(新手避坑)
| 参数 | dall-e-2 | dall-e-3 | gpt-image-1 |
|---|---|---|---|
| 质量 quality | standard | standard / hd | low / medium / high |
| 尺寸 size | 256² / 512² / 1024² | 1024² / 1792x1024 / 1024x1792 | 1024² / 1536x1024 / 1024x1536 / auto |
| 数量 n | 1–10 | 仅 1 | 1–10 |
| 风格 style | ✗ | vivid / natural | ✗ |
| 返回格式 | URL / Base64 | URL / Base64 | 固定 Base64 |
| 提示词上限 | 1000 字符 | 4000 字符 | 32000 字符 |
两个最常见的坑:给dall-e-3传n > 1会直接失败;给gpt-image-1传responseFormat没有意义。
📱 在 SwiftUI 示例 App 中体验图像生成
示例项目内置了完整的图像生成 Demo:输入提示词 → 点击发送 →AsyncImage直接渲染出图,可作为 SwiftUI 集成的参考实现:
- 界面:ImagesDemoView.swift
- 业务逻辑:ImagesProvider.swift(封装创建 / 编辑 / 变体三个调用)
三个服务方法的完整签名见 OpenAIService.swift,返回模型定义在 CreateImageResponse.swift,更多细节可查阅 README.md 的 Images 章节。
✅ 总结
- 新项目:直接用新 ImageGen API 的
createImages/editImage/createImageVariations,gpt-image-1的透明背景、多图编辑能力开箱即用 - 老项目:DALL·E 代码继续走
legacyCreateImages系列,平滑共存 - 记住一句话:
gpt-image-1出 Base64,DALL·E 出 URL(60 分钟有效),保存逻辑按此分流即可
【免费下载链接】SwiftOpenAIThe most complete open-source Swift package for interacting with OpenAI's public API.项目地址: https://gitcode.com/gh_mirrors/sw/SwiftOpenAI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
