다음을 통해 공유


AI 이미지 생성 시작

AI 이미지 생성 기능은 Windows 앱 SDK에 제공되는 인공 지능 지원 안정적인 확산 기반(이미지 처리에 사용되는 오픈 소스 AI 모델) API 집합을 통해 Windows의 Microsoft Foundry에서 지원됩니다. 이러한 API는 Windows 앱에서 자연어 프롬프트 및 디바이스에서 생성 모델을 사용하여 이미지 및 사진을 만들고, 변환하고, 향상시킬 수 있습니다.

AI 이미지 생성은 Windows Copilot+ PC의 효율성과 성능에 최적화되어 있습니다.

API 세부 정보는AI 이미징 기능에 대한 API 참조를 참조하세요.

필수 조건

AI 이미지 생성으로 무엇을 할 수 있나요?

AI 이미지 생성을 사용하여 프롬프트를 시각적 아티팩트로 변환합니다. 지원되는 기능은 다음과 같습니다.

  • 텍스트-이미지

    설명 텍스트 프롬프트에서 이미지를 생성합니다. 일러스트레이션, 디자인, 사용자 지정된 배경 및 개념적 시각화에 유용합니다.

  • 이미지 변환

    구조를 유지하면서 텍스트 지침에 따라 기존 이미지를 변환합니다. 스타일 지정, 테마 지정 및 기타 변형에 유용합니다.

  • 매직 채우기

    이미지의 마스킹된 영역을 AI 생성 콘텐츠로 채웁니다. 개체 제거, 지역 복구 및 직관적인 편집(수동 도구 대신 텍스트 프롬프트를 통한 복잡한 수정)에 유용합니다.

  • 컬러링북 스타일

    이미지를 색칠하기 책이나 이와 유사한 교육 환경에 사용할 수 있는 간소화된 개요로 변환합니다.

  • Restyle

    구조를 유지하면서 기존 이미지에 꾸밈 또는 비주얼 스타일을 적용합니다. 크리에이티브 필터, 꾸밈 모드 또는 테마 변환에 유용합니다.

예시

AI 이미지 생성 API를 사용하는 경우 다음 기본 단계를 수행합니다.

  1. EnsureReadyAsync를 사용하여 모델이 준비되었는지 확인합니다.
  2. ImageGenerator 인스턴스를 만듭니다.
  3. 적절한 생성 워크플로(텍스트 프롬프트, 이미지 입력 또는 마스크)를 선택합니다.
  4. 해당 생성 메서드를 호출합니다.
  5. 보기, 편집 또는 저장을 위해 출력을 ImageBuffer 로 수신합니다.

텍스트 프롬프트에서 이미지 생성(텍스트-이미지)

이 예제에서는 텍스트 프롬프트에서 이미지를 생성하는 방법을 보여줍니다. 특히 , "산 호수의 아름다운 일몰".

using Microsoft.Windows.AI.Imaging;
using Microsoft.Graphics.Imaging;

public async Task GenerateImageFromText()
{
    // Check if models are ready
    var readyState = ImageGenerator.GetReadyState();
    if (readyState != AIFeatureReadyState.Ready)
    {
        // Download models if needed
        var result = await ImageGenerator.EnsureReadyAsync();
        if (result.Status != AIFeatureReadyResultState.Success)
        {
            Console.WriteLine("Failed to prepare models");
            return;
        }
    }

    // Create ImageGenerator instance
    using var generator = await ImageGenerator.CreateAsync();
    
    // Configure generation options
    var options = new ImageGenerationOptions
    {
        MaxInferenceSteps = 6,
        Creativity = 0.8,
        Seed = 42
    };

    // Generate image
    var result = generator.GenerateImageFromTextPrompt("A beautiful sunset over a mountain lake", options);
    
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        var imageBuffer = result.Image;
        // Use the generated image (save to file, display, etc.)
        await SaveImageBufferAsync(imageBuffer, "generated_image.png");
    }
    else
    {
        Console.WriteLine($"Image generation failed: {result.Status}");
    }
}

이미지 스타일 변환(이미지 투 이미지)

이 예제에서는 텍스트 프롬프트를 기반으로 사진을 유화로 변환하는 방법을 보여줍니다. 특히 "유화 스타일, 두꺼운 붓 터치, 예술적".

public async Task RestyleImage()
{
    using var generator = await ImageGenerator.CreateAsync();
    
    // Load input image
    var inputImage = await LoadImageBufferAsync("photo.jpg");
    
    var options = new ImageGenerationOptions();
    var styleOptions = new ImageFromImageGenerationOptions
    {
        Style = ImageFromImageGenerationStyle.Restyle,
        ColorPreservation = 0.7f
    };

    var result = generator.GenerateImageFromImageBuffer(
        inputImage, 
        "oil painting style, thick brush strokes, artistic", 
        options, 
        styleOptions);
    
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        await SaveImageBufferAsync(result.Image, "restyled_image.png");
    }
}

이미지 스타일 변환(이미지-이미지 복합)

이 예제에서는 텍스트 프롬프트를 기반으로 사진을 유화로 변환하는 방법을 보여줍니다. 특히, "유화, 두꺼운 붓 터치, 다양한 색상, 전통적인 캔버스 질감, 사실적인 조명, 고전 미술 스타일, 겹겹이 칠한 페인트, 세부 사항이 풍부한, 극적인 대비, 임파스토, 질감이 있는 캔버스".

using Microsoft.Windows.AI.Imaging;

public async Task CreateImageFromPrompt()
{
    using ImageGenerator model = await ImageGenerator.CreateAsync();

    // Using default values
    var options = new ImageGenerationOptions();

    // Set ImageFromImageGenerationOptions fields
    var imageFromImageOptions = new ImageFromImageGenerationOptions();
    imageFromImageOptions.Style = ImageFromImageGenerationStyle.Restyle;
    imageFromImageOptions.ColorPreservation = 0.5f; // range [0.0f, 1.0f]

    // Load an input image buffer
    using var inputImage = await Utils.LoadSampleImageBufferAsync("sdxl_input_horse.png");

    var textPrompt = "An oil painting, thick brush strokes, rich color palette, traditional canvas texture, realistic lighting, classical fine art style, layered paint, high detail, dramatic contrast, impasto, textured canvas";

    var result = model.GenerateImageFromImageBuffer(inputImage, textPrompt, options, imageFromImageOptions);
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        // Image generated successfully
        var imageBuffer = result.Image;
        // Process the imageBuffer as needed, e.g., save to file or display
    }
    else
    {
        // Handle error cases based on result.Status
        Console.WriteLine($"Image generation failed with status: {result.Status}");
    }
}

마스크로 마법 채우기

이 예제에서는 마스크를 사용하여 이미지 영역을 채우는 방법을 보여줍니다. 특히 , "빨간색 스포츠카".

public async Task FillMaskedRegion()
{
    using var generator = await ImageGenerator.CreateAsync();
    
    var inputImage = await LoadImageBufferAsync("scene.jpg");
    var maskImage = await LoadImageBufferAsync("mask.png"); // GRAY8 format
    
    var options = new ImageGenerationOptions();
    
    var result = generator.GenerateImageFromImageBufferAndMask(
        inputImage, 
        maskImage, 
        "a red sports car", 
        options);
    
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        await SaveImageBufferAsync(result.Image, "filled_image.png");
    }
}

색칠 공부 책 스타일 이미지 제작

이 예제에서는 색칠하기 책 스타일로 이미지를 생성하는 방법을 보여줍니다. 특히 , "우주선의 고양이".

using Microsoft.Windows.AI.Imaging;

public async Task CreateImageFromPrompt()
{
    using ImageGenerator model = await ImageGenerator.CreateAsync();

    // Using default values
    var options = new ImageGenerationOptions();

    // Set ImageFromTextGenerationOptions fields
    var imageFromTextOptions = new ImageFromTextGenerationOptions();
    imageFromTextOptions.Style = ImageFromTextGenerationStyle.ColoringBook;

    var result = model.GenerateImageFromTextPrompt("Cat in spaceship", options, imageFromTextOptions);
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        // Image generated successfully
        var imageBuffer = result.Image;
        // Process the imageBuffer as needed, e.g., save to file or display
    }
    else
    {
        // Handle error cases based on result.Status
        Console.WriteLine($"Image generation failed with status: {result.Status}");
    }
}

사용자 지정 ImageGenerationOptions 매개 변수를 사용하여 이미지 생성

이 예제에서는 콘텐츠 필터 및 제한 사항 집합을 기반으로 이미지를 생성하는 방법을 보여 줍니다. 특히 "우주선의 고양이"를, TextContentFilterSeverityLowImageContentFilterSeverityMinimum을 사용하여 표현한 것입니다.

using Microsoft.Windows.AI.Imaging;
using Microsoft.Windows.AI.ContentSafety;

public async Task CreateImageFromPromptAndCustomOptions()
{
    using ImageGenerator model = await ImageGenerator.CreateAsync();

    // Using default values
    var options = new ImageGenerationOptions();

    // Set custom ImageGenerationOptions fields
    options.MaxInferenceSteps = 6;
    options.Creativity = 0.8;
    options.Seed = 1234;
    ContentFilterOptions contentFilterOptions = new ContentFilterOptions();
    contentFilterOptions.PromptMaxAllowedSeverityLevel = TextContentFilterSeverity(SeverityLevel.Low);
    contentFilterOptions.ImageMaxAllowedSeverityLevel = ImageContentFilterSeverity(SeverityLevel.Minimium);
    options.ContentFilterOptions = contentFilterOptions;

    var result = model.GenerateImageFromTextPrompt("Cat in spaceship", options);
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        // Image generated successfully
        var imageBuffer = result.Image;
        // Process the imageBuffer as needed, e.g., save to file or display
    }
    else
    {
        // Handle error cases based on result.Status
        Console.WriteLine($"Image generation failed with status: {result.Status}");
    }
}

책임 있는 인공지능

다음 단계의 조합을 사용하여 이러한 이미징 API가 신뢰할 수 있고 안전하며 책임감 있게 빌드되도록 했습니다. 앱에서 AI 기능을 구현할 때 Windows의 책임 있는 생성 AI 개발에 설명된 모범 사례를 검토하는 것이 좋습니다.

참고하십시오