-
Créez des images de haute qualité avec Image Playground
Générez des images de haute qualité dans votre app à l'aide d'Image Playground. Avec un nouveau modèle génératif qui s'exécute sur Private Cloud Compute, les utilisateurs peuvent créer des images avec pratiquement n'importe quel style, y compris un style photoréaliste, dans votre app. Vous pouvez également spécifier des dimensions pour étendre les possibilités d'utilisation, et permettre aux utilisateurs de modifier les images à l'aide de descriptions en langage naturel ou de commandes tactiles. Découvrez comment adopter Image Playground, générer des images à partir de descriptions et de photos, et gérer la disponibilité des fonctionnalités dans votre app.
Chapitres
- 0:00 - Introduction
- 2:03 - Capabilities
- 5:02 - Adopt Image Playground
- 8:29 - Options
- 12:15 - Availability
Ressources
Vidéos connexes
WWDC26
WWDC24
-
Rechercher dans cette vidéo…
-
-
5:28 - Adopt Image Playground in SwiftUI
// Adopt Image Playground in SwiftUI func imagePlaygroundSheet( isPresented: Binding<Bool>, concepts: [ImagePlaygroundConcept] = [], sourceImage: Image? = nil, onCompletion: @escaping (URL) -> Void, onCancellation: (() -> Void)? = nil ) -> some View -
5:39 - Add Image Playground sheet with binding to @State
// Adopt Image Playground @State private var showingPlayground = false var body: some View { Button("Create image") { showingPlayground = true } .imagePlaygroundSheet( isPresented: $showingPlayground, onCompletion: { url in var updated = currentCard store.saveImage(url, for: &updated) } ) } -
6:29 - Seeding the sheet with context from your card
// Seeding the sheet with context from your card var concepts: [ImagePlaygroundConcept] { [ .text(card.theme), .extracted(from: card.message, title: card.theme), ] } var body: some View { Button("Create image") { showingPlayground = true } .imagePlaygroundSheet( isPresented: $showingPlayground, concepts: concepts, onCompletion: { url in var updated = card store.saveImage(url, for: &updated) } ) } -
7:11 - Starting from a reference photo
// Starting from a reference photo @State private var sourceImage: Image? var body: some View { Button("Create image") { showingPlayground = true } .imagePlaygroundSheet( isPresented: $showingPlayground, concepts: concepts, sourceImage: sourceImage, onCompletion: { url in var updated = card store.saveImage(url, for: &updated) } ) } -
7:42 - Providing a visual suggestion using a drawing
// Providing a visual suggestion using a drawing @State private var drawing = PKDrawing() var concepts: [ImagePlaygroundConcept] { var result: [ImagePlaygroundConcept] = [ .text(card.theme), .extracted(from: card.message) ] if !drawing.strokes.isEmpty { result.append(.drawing(drawing)) } return result } -
8:06 - Adopt Image Playground in UIKit or AppKit
// Adopt Image Playground in UIKit or AppKit func presentViewController() { let viewController = ImagePlaygroundViewController() viewController.concepts = [ .text(card.theme), .extracted(from: card.message) ] viewController.delegate = self present(viewController, animated: true) } func imagePlaygroundViewController( _ viewController: ImagePlaygroundViewController, didCreateImageAt url: URL ) { var updated = card store.saveImage(url, for: &updated) dismiss(animated: true) } -
9:02 - Size Specification
// Size Specification var options: ImagePlaygroundOptions { var options = ImagePlaygroundOptions() options.sizeSpecification = .closest(to: card.format.size) return options } var body: some View { Button("Create image") { showingPlayground = true } .imagePlaygroundSheet( isPresented: $showingPlayground, concepts: concepts, onCompletion: { url in var updated = card store.saveImage(url, for: &updated) } ) .imagePlaygroundOptions(options) } -
9:39 - Styles
// Styles var options: ImagePlaygroundOptions { var options = ImagePlaygroundOptions() options.sizeSpecification = .closest(to: card.format.size) return options } var body: some View { Button("Create image") { showingPlayground = true } .imagePlaygroundSheet( isPresented: $showingPlayground, concepts: concepts, onCompletion: { url in var updated = card store.saveImage(url, for: &updated) } ) .imagePlaygroundOptions(options) .imagePlaygroundGenerationStyle( pendingStylePreset.defaultStyle, in: pendingStylePreset.allowedStyles ) } -
10:27 - External Provider Style
// External Provider Style var options: ImagePlaygroundOptions { var options = ImagePlaygroundOptions() options.sizeSpecification = .closest(to: card.format.size) return options } var body: some View { Button("Create image") { showingPlayground = true } .imagePlaygroundSheet( isPresented: $showingPlayground, concepts: concepts, onCompletion: { url in var updated = card store.saveImage(url, for: &updated) } ) .imagePlaygroundOptions(options) .imagePlaygroundGenerationStyle( pendingStylePreset.defaultStyle, in: pendingStylePreset.allowedStyles + [.externalProvider] ) } -
11:02 - Generating an expressive icon for the card thumbnail
// Generating an expressive icon for the card thumbnail @State private var showingIconPlayground = false var body: some View { Button("Create icon") { showingIconPlayground = true } Color.clear .imagePlaygroundSheet( isPresented: $showingIconPlayground, concepts: concepts, onCompletion: { _ in } , onAdaptiveImageGlyphCreation: { glyph in var updatedCard = card store.saveIcon(glyph, for: &updatedCard) } ) .imagePlaygroundGenerationStyle(.emoji, in: [.emoji]) } -
12:01 - Disabling personalization when it doesn't fit your context
// Disabling personalization when it doesn't fit your context var options: ImagePlaygroundOptions { var options = ImagePlaygroundOptions() options.sizeSpecification = .closest(to: card.format.size) options.personalization = .disabled return options } -
12:32 - Supports image generation
// Supports image generation @Environment(\.supportsImageGeneration) private var supportsImageGeneration var body: some View { NavigationLink(card.recipient) { if supportsImageGeneration { CardEditorView(card: card) }γelse { CardPickerView(card: card) } } }
-
-
- 0:00 - Introduction
The ImagePlayground framework brings high-quality, true-to-life image creation into your app, on devices with Apple Intelligence support.
- 2:03 - Capabilities
Image Playground enables the creation of high-quality images with people, styles, and different aspect ratios.
- 5:02 - Adopt Image Playground
Present the Image Playground sheet and seed it with context from your app.
- 8:29 - Options
Configure the Image Playground sheet with options like size, style, and personalization.
- 12:15 - Availability
Ensure your app gracefully handles both supported and unsupported devices, presenting the full Image Playground experience when available.