✨
Image Playground を実装してみる
Image Playgroundとは
Apple Intelligenceの画像生成機能です。キーワードや説明から画像を生成したり、自分のアルバムから写真や人を使い特定のスタイルに変更することもできます。
Apple Intelligenceとして提供されている機能で唯一開発者がアプリに組み込むことができる機能です。
利用できる環境
ハードウェア
- A17 ProまたはM1以降を搭載したデバイス
- iOS/iPadOS 18.2 または macOS 15.2
- 言語設定が英語(アメリカ)(執筆時時点)
- Early Accessの申請が必要(執筆時時点)
利用方法
環境 | |
---|---|
UIKit | ImagePlaygroundViewController |
SwiftUI |
View.imagePlaygroundSheet() (本記事で取り扱います) |
コード以外 | デバイス上のImage Playgrounds.app
|
実装方法(SwiftUI)
利用できる環境か確認
@Environment(\.supportsImagePlayground) var supportsImagePlayground
@Environment(\.supportsImagePlayground)
では画像生成に必要なハードウェア条件が揃っているかをBool
で確認できます。
Sheetを理解
View.imagePlaygroundSheet()
はこのように定義されています。
func imagePlaygroundSheet(
isPresented: Binding<Bool>,
concept: String, // concepts: [ImagePlaygroundConcept] = [],
sourceImage: Image? = nil, // sourceImageURL: URL,
onCompletion: @escaping (URL) -> Void,
onCancellation: (() -> Void)? = nil
) -> some View
簡単に説明をすると、
コード | |
---|---|
concept |
画像生成のためのキーワード。concepts にすることで配列で複数提供 |
sourceImage |
参考・加工をする画像を提供 |
onCompletion |
処理した画像をURL として返す |
実装例
@State var isPresented: Bool = false
var body: some View {
Button {
isPresented = true
} label: {
Text("Show Playground")
}
.imagePlaygroundSheet(isPresented: $isPresented) { url in
// completion処理を書く
}
}
サンプル
参考
おまけ
Image Playground用のSFSymbolが2つ(apple.image.playground
apple.image.playground.fill
)用意されています。Image Playgroundを指すものにのみ使えるので注意してください。
Discussion