View in English

  • Apple Developer
    • 시작하기

    시작하기 탐색

    • 개요
    • 알아보기
    • Apple Developer Program

    알림 받기

    • 최신 뉴스
    • Hello Developer
    • 플랫폼

    플랫폼 탐색

    • Apple 플랫폼
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    피처링

    • 디자인
    • 배포
    • 게임
    • 액세서리
    • 웹
    • 홈
    • CarPlay
    • 기술

    기술 탐색

    • 개요
    • Xcode
    • Swift
    • SwiftUI

    피처링

    • 손쉬운 사용
    • 앱 인텐트
    • Apple Intelligence
    • 게임
    • 머신 러닝 및 AI
    • 보안
    • Xcode Cloud
    • 커뮤니티

    커뮤니티 탐색

    • 개요
    • Apple과의 만남 이벤트
    • 커뮤니티 주도 이벤트
    • 개발자 포럼
    • 오픈 소스

    피처링

    • WWDC
    • Swift Student Challenge
    • 개발자 이야기
    • App Store 어워드
    • Apple 디자인 어워드
    • 문서

    문서 탐색

    • 문서 라이브러리
    • 기술 개요
    • 샘플 코드
    • 휴먼 인터페이스 가이드라인
    • 비디오

    릴리즈 노트

    • 피처링 업데이트
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • 다운로드

    다운로드 탐색

    • 모든 다운로드
    • 운영 체제
    • 애플리케이션
    • 디자인 리소스

    피처링

    • Xcode
    • TestFlight
    • 서체
    • SF Symbols
    • Icon Composer
    • 지원

    지원 탐색

    • 개요
    • 도움말
    • 개발자 포럼
    • 피드백 지원
    • 문의하기

    피처링

    • 계정 도움말
    • 앱 심사 지침
    • App Store Connect 도움말
    • 새로 추가될 요구 사항
    • 계약 및 지침
    • 시스템 상태
  • 빠른 링크

    • 이벤트
    • 뉴스
    • 포럼
    • 샘플 코드
    • 비디오
 

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 코드
  • Image Playground를 사용하여 고품질 이미지 생성하기

    Image Playground를 사용하여 앱에서 고품질 이미지 생성을 구현하세요. 비공개 클라우드 컴퓨팅에서 실행되는 새로운 생성형 모델을 통해 사용자는 앱에서 사진처럼 사실적인 스타일을 비롯해 거의 모든 스타일의 이미지를 만들 수 있습니다. 또한 한층 더 많은 곳에서 사용하기 위해 크기를 지정할 수 있으며, 사용자가 자연어 설명과 터치 기능을 사용하여 이미지를 수정하도록 할 수 있습니다. Image Playground를 도입하고, 설명과 사진에서 이미지를 생성하며, 앱에서 기능 사용 가능 여부를 관리하는 방법을 살펴보세요.

    챕터

    • 0:00 - Introduction
    • 2:03 - Capabilities
    • 5:02 - Adopt Image Playground
    • 8:29 - Options
    • 12:15 - Availability

    리소스

      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC26

    • 비공개 클라우드 컴퓨팅에서 [Model Name] 활용하기
    • PencilKit으로 획 사이에 숨은 뜻 파악하기

    WWDC24

    • Genmoji로 앱에서 더욱 풍부한 표현 선보이기
  • 비디오 검색…
    • 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.

Developer Footer

  • 비디오
  • WWDC26
  • Image Playground를 사용하여 고품질 이미지 생성하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • Apple Intelligence
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • Mini Apps Partner Program
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    최신 뉴스 읽기.
    Apple Developer 앱 받기.
    Copyright © 2026 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침