본문으로 건너뛰기

이미지 생성

텍스트 프롬프트로 하나 이상의 UIImage 결과를 생성합니다. 서비스 제공자의 생성 수 제한과 선택 가능한 스타일은 부가 기능이며 생성 작업을 요청하는 데 반드시 필요하지는 않습니다.

동작 흐름

이미지 생성 작업 수명 주기

프롬프트를 준비하고 사용할 수 있으면 제공자의 생성 수 제한이나 스타일을 적용합니다. 제공되지 않으면 기본 작업 설정을 사용합니다.

호스트 앱

프롬프트 준비

생성할 이미지를 설명하는 비어 있지 않은 프롬프트를 준비합니다.

AI 서비스

선택적 제한 확인

제공자의 양수 최댓값이 있으면 사용하고, 없으면 이미지 한 장을 요청합니다.

AI 서비스 → 앱

선택적 스타일 불러오기

제공자가 스타일을 지원하면 반환된 styleCode를 사용하고, 아니면 스타일을 비워 둡니다.

호스트 앱

작업 설정

결정된 생성 수와 스타일, 선택적 크기와 언어를 설정합니다.

AI 서비스

작업 생성

생성을 시작하고 onTaskCreated에서 받은 작업 ID를 유지합니다.

작업 생성됨
최종 결과

이미지 수신

완료 콜백의 성공 여부, 이미지, 작업 ID, 오류를 사용합니다.

선택적 기능 정보가 없다고 생성을 막아서는 안 됩니다. 사용할 수 없으면 이미지 한 장과 지정하지 않은 스타일을 사용하세요.

사전 요구 사항

  • AIBudsAISDK를 초기화하고 서비스 제공자를 선택한 뒤 필요한 경우 인증을 완료합니다.
  • 선택한 서비스 제공자가 AIGCServiceAPI를 구현하는지 확인합니다.
  • 생성된 이미지를 표시, 저장, 공유하는 앱 정책을 정의합니다.

AI를 활용해 구현

AI로 구현

AI로 이 워크플로 구현

공식 “AIBuds AI로 이미지 생성” 스킬을 사용해 앱에 맞게 구현하세요.

https://docs-aibuds.github.io/ko/skills/generate-aibuds-ai-images을 읽고 지침을 따르세요. 이 스킬로 “AIBuds AI로 이미지 생성”을 이 iOS 프로젝트에 구현하고 검증하세요.
공식 스킬 보기

API Reference

프레임워크

AIBudsAI.xcframework

선언

Swift
/// The available styles cached by the selected image-generation provider.
static var aigcStyles: [AIGCStyleModel]? { get }

/// The maximum number of images accepted in one task. A positive value can be
/// used to constrain the requested image count.
static var aigcMaxGenerateCount: Int { get }

/// Fetches styles supported by the selected provider.
public static func fetchAigcStyles(completion: ((_ styles: [AIGCStyleModel]?, _ error: NSError?) -> Void)? = nil)

/// Generates images from a text prompt and configuration.
/// - Parameters:
///   - prompt: The text prompt for image generation.
///   - config: Task configuration. Defaults to `.default`.
///   - onTaskCreated: Called with the provider task identifier.
///   - completion: Returns the task identifier, success flag, generated images,
///     and failure information.
public static func generateAIPhoto(prompt: String,
                                   config: AIGCTaskConfig = .default,
                            onTaskCreated: ((_ taskId: String) -> Void)? = nil,
                               completion: ((
                                   _ taskId: String?,
                                   _ success: Bool,
                                   _ images: [UIImage]?,
                                   _ error: NSError?
                               ) -> Void)? = nil)

generateAIPhoto, fetchAigcStyles, AIGCTaskConfig를 참고하세요.

작업 설정

속성의미
style서비스 제공자가 AIGCStyleModel.styleCode로 반환한 스타일 코드입니다. 스타일을 사용할 수 없거나 앱에서 스타일 선택을 제공하지 않으면 nil로 둡니다.
imageCount요청 이미지 수입니다. 기본값 1을 사용하되, 양수 aigcMaxGenerateCount가 있으면 알려진 제한 안에서 지정합니다.
imageSize선택적인 양수 너비와 높이입니다. nil이면 제공자 기본값을 사용합니다.
languageen-US와 같은 프롬프트 언어입니다. nil이면 앱 현지화를 사용하고, 빈 문자열이면 지원되는 경우 자동 감지를 요청합니다.

사용 예제

선택적 제공자 기능으로 생성

앱에서 스타일 선택을 제공하지 않으면 fetchAigcStyles를 건너뛰고 생성 도우미에 nil을 전달하세요. 아래 예제는 스타일을 불러오되 목록이 비어 있거나 요청이 실패해도 프롬프트를 제출합니다.

Swift
let prompt = "A lightweight wearable assistant on a clean studio background"

func generate(styleCode: String?) {
    let maximum = AIBudsAISDK.aigcMaxGenerateCount
    let config = AIGCTaskConfig()
    config.style = styleCode
    config.imageCount = maximum > 0 ? min(2, maximum) : 1
    config.language = "en-US"

    AIBudsAISDK.generateAIPhoto(
        prompt: prompt,
        config: config,
        onTaskCreated: { taskID in
            DispatchQueue.main.async { showTask(id: taskID) }
        },
        completion: { taskID, success, images, error in
            DispatchQueue.main.async {
                guard success, let images, !images.isEmpty else {
                    if let error {
                        show(error)
                    } else {
                        print("The provider returned no images")
                    }
                    return
                }
                show(images: images, taskID: taskID)
            }
        }
    )
}

AIBudsAISDK.fetchAigcStyles { styles, error in
    // Style discovery is optional. A nil style uses the provider default.
    let styleCode = error == nil ? styles?.first?.styleCode : nil
    generate(styleCode: styleCode)
}

오류 처리

스타일 조회 실패나 생성 수 제한을 사용할 수 없는 것은 이미지 생성 실패가 아닙니다. style = nil, imageCount = 1로 대체하고 생성 완료 콜백을 최종 작업 결과로 처리하세요.

참고

  • 스타일 코드와 양수 최대 생성 수는 선택적인 제공자 데이터이며 바뀔 수 있습니다. Demo 값을 직접 입력하지 마세요.
  • 빈 스타일 목록도 정상입니다. 제공자 기본값을 사용하려면 style = nil로 프롬프트를 제출하세요.
  • 작업 생성 콜백은 이미지 생성 성공을 의미하지 않습니다.
  • 현재 공개 API는 이미지 생성 진행률이나 취소 기능을 제공하지 않습니다.