Image Playground 變成 app 內建能力:高品質生成交給系統體驗承接
這場 session 說明 Image Playground 在 WWDC26 的方向:模型移到 Private Cloud Compute、支援更高品質與 photorealistic 類結果,app 端用 sheet 或 view controller 嵌入完整體驗,再用 concepts、source image、options 與 availability fallback 控制產品情境。
Apple 不鼓勵 app 自己重做圖片生成 UI;新的 Image Playground 把模型、隱私、樣式、personalization 與使用量管理包成系統體驗,開發者要做的是提供正確上下文、儲存結果,並設計不可用時的替代路徑。
這支影片其實在拆四個產品整合問題
生成品質與隱私移到系統層處理
新的 generative model 跑在 Private Cloud Compute,支援更多風格、尺寸與更貼近真實的 image creation;使用量限制也由系統管理,不需要 app 自建 quota UI。
SwiftUI 採用點是一個 sheet modifier
.imagePlaygroundSheet 負責 UI、模型互動、style picker 與 completion。完成後回傳 generated file URL,app 要在 session 結束前保存到自己的儲存位置。
你的 app 貢獻故事,系統負責生成
ImagePlaygroundConcept.text、extracted、source image 與 PencilKit drawing 都是引導生成的上下文。它們是 suggestion,不是硬性約束。
可用性不是單一裝置檢查
supportsImageGeneration 同時反映裝置能力、語言/地區支援與使用者是否啟用。不可用時,app 應提供 Photos picker 或其他簡化路徑。
從按鈕到可保存圖片的導入流程
先決定圖片在產品中的位置
影片用 greeting card creator 當例子。先問清楚圖片是封面、頭像、縮圖、壁紙還是訊息的一部分,這會影響尺寸、style、personalization 與 fallback。
用 .imagePlaygroundSheet 呈現系統體驗
SwiftUI 端用 binding 控制 sheet,completion 收到 URL 後立即複製或保存。UIKit / AppKit 則使用 ImagePlaygroundViewController 與 delegate。
把 app context 變成 concepts
直接文字用 .text,長文用 .extracted,圖片用 sourceImage,手繪提示用 .drawing。讓使用者不是從空白 prompt 開始。
用 options 約束尺寸、風格與 personalization
ImagePlaygroundOptions 控制 size specification、default style、allowed styles 與 personalization。若只允許一種 style,picker 會鎖定該風格。
用 availability gate 分流體驗
當 supportsImageGeneration 為 false,直接走替代 UI;不要讓使用者進入一個最後才失敗的生成流程。
重點 1:ImageCreator deprecated,新的方向是完整系統體驗
影片明確提到 non-UI 的 ImageCreator API 已 deprecated。新的能力集中在 Image Playground 的體驗層:更高品質、built-in privacy、使用者熟悉的 style picker、personalization 與系統管理 usage limits。
這代表遷移時不能只把舊 API 呼叫換成新 API。你需要重新思考圖片生成在 app 內的互動入口、預設上下文、完成後儲存、取消行為與不可用 fallback。
重點 2:completion URL 是暫存結果,保存責任在 app
SwiftUI 範例中,按鈕打開 sheet;使用者接受圖片後,completion closure 收到一個 URL。官方說明這個 URL 指向 app container 裡的 temporary location,必須在 session 結束前另存到 app 自己的資料模型或檔案位置。
ImagePlaygroundConcept 預先帶入 card theme、message 或其他 app context,減少使用者從零描述的成本。.drawing(PKDrawing) 讓手繪筆觸成為 visual suggestion,適合 iPad 上有草圖、卡片或創作 canvas 的 app。ImagePlaygroundViewController 透過 properties 設 concepts/options,再由 delegate 接收 didCreateImageAt。重點 3:options 決定生成體驗和產品語氣是否一致
ImagePlaygroundOptions 可以設定最接近某個 CGSize 的尺寸規格,讓橫式卡片、直式卡片、方形頭像拿到不同 aspect ratio。ImagePlaygroundStyle 則包含 illustration、sketch、animation、emoji 等風格。
如果 app 的產品語氣很固定,可以限制 allowed styles;如果使用者已在 Settings 設定第三方 provider,例如 ChatGPT,externalProvider 可作為 opt-in style 出現在 picker。emoji style 的完成回呼會給 NSAdaptiveImageGlyph,適合像 emoji 一樣 inline 放進文字。
風險與遷移注意事項
supportsImageGeneration 做入口分流。.closest(to:) 會映射到支援的 aspect ratio / resolution,不代表完全輸出任意尺寸。下游裁切與排版要能承接。對產品與工程的實作啟發
Image Playground 最適合放在「app 已經知道使用者想表達什麼」的地方:卡片訊息、個人 profile、聊天表情、封面、活動邀請、故事或回憶。不要只放一個通用「生成圖片」按鈕,而是把 app context 轉成 concepts,讓結果看起來是為當下任務而生。
工程上,建議把生成入口當成一個可 fallback 的 media picker:先檢查 availability,再決定 Image Playground 或替代 picker;completion 後立即保存;取消、失敗、不可用都回到同一套資料模型狀態。
來源
主要來源為 Apple Developer 官方影片頁、transcript、章節與 code snippets;YouTube 影片頁用於 iframe 與發布 metadata。官方頁:Create high-quality images using Image Playground - WWDC26。YouTube:WWDC26: Create high quality images using Image Playground | Apple。
- →Image Playground 新模型與體驗交給系統處理,app 應提供上下文與結果保存。
- →
.imagePlaygroundSheet是 SwiftUI 主入口;UIKit/AppKit 用ImagePlaygroundViewController。 - →Concepts、source image、drawing 與 options 決定生成是否貼合產品任務。
- →
supportsImageGeneration是必要 gate;不可用時要有乾淨的替代路徑。