Compartilhar via


Introdução à Geração de Imagem de IA

Os recursos de Geração de Imagem de IA são compatíveis com o Microsoft Foundry no Windows por meio de um conjunto de APIs baseadas em inteligência artificial, com suporte de difusão estável (modelo de IA de software livre usado para processamento de imagens) que são enviadas no SDK do Aplicativo do Windows. Essas APIs podem ser usadas em seus aplicativos do Windows para criar, transformar e aprimorar imagens e fotos usando prompts de linguagem natural e modelos generativos no dispositivo.

A Geração de Imagem por IA está otimizada para oferecer eficiência e desempenho em PCs com Windows Copilot+.

Para obter detalhes da API, consulte referência de API para recursos de imagem de IA.

Pré-requisitos

O que posso fazer com a Geração de Imagem de IA?

Use a Geração de Imagem de IA para transformar prompts em artefatos visuais. Os recursos com suporte incluem:

  • Texto para Imagem

    Gere imagens a partir de sugestões de texto descritivo. Útil para ilustrações, design, planos de fundo personalizados e visualização conceitual.

  • Imagem para Imagem

    Transforme uma imagem existente com base nas diretrizes textuais, preservando a estrutura. Útil para estilo, temas e outras variações.

  • Preenchimento Mágico

    Preencha regiões mascaradas de uma imagem com conteúdo gerado por IA. Útil para remover objetos, reparar regiões e edição intuitiva (revisões complexas por meio de prompts de texto em vez de ferramentas manuais).

  • Estilo do livro de colorir

    Converta imagens em contornos simplificados que podem ser usados para um livro de colorir ou uma experiência educacional semelhante.

  • Restyle

    Aplique estilos artísticos ou visuais a imagens existentes ao preservar a estrutura. Útil para filtros criativos, modos artísticos ou transformações temáticas.

Exemplos

Siga estas etapas básicas ao usar as APIs de Geração de Imagem de IA.

  1. Verifique se o modelo está pronto usando EnsureReadyAsync.
  2. Crie uma instância do ImageGenerator .
  3. Selecione o fluxo de trabalho de geração apropriado (prompt de texto, entrada de imagem ou máscara).
  4. Invoque o método de geração correspondente.
  5. Receba a saída como um ImageBuffer para exibir, editar ou salvar.

Gerar uma imagem de um prompt de texto (Texto para Imagem)

Este exemplo mostra como gerar uma imagem de um prompt de texto. Especificamente, "Um belo pôr do sol sobre um lago montanhoso".

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}");
    }
}

Transformar um estilo de imagem (imagem em imagem)

Este exemplo mostra como transformar uma fotografia em uma pintura a óleo com base em um prompt de texto. Especificamente, "estilo de pintura a óleo, pincel grosso, artístico".

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");
    }
}

Transformar um estilo de imagem (complexo de imagem a imagem)

Este exemplo mostra como transformar uma fotografia em uma pintura a óleo com base em um prompt de texto. Especificamente, "Uma pintura a óleo, traços de pincel espessos, paleta de cores avançadas, textura de tela tradicional, iluminação realista, estilo clássico de belas artes, tinta em camadas, detalhes altos, contraste dramático, impasto, tela texturizada".

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}");
    }
}

Preenchimento Mágico com Máscara

Este exemplo mostra como usar uma máscara para preencher uma região de uma imagem. Especificamente, "um carro esportivo vermelho".

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");
    }
}

Gerar imagem no estilo de livro de colorir

Este exemplo mostra como gerar uma imagem em um estilo de livro de colorir. Especificamente, um "Gato na nave espacial".

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}");
    }
}

Gerar imagem usando parâmetros personalizados ImageGenerationOptions

Este exemplo mostra como gerar uma imagem com base em um conjunto de filtros de conteúdo e restrições. Especificamente, um "Gato na nave espacial" usando um TextContentFilterSeverity de Baixo e um ImageContentFilterSeverity de Mínimo.

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}");
    }
}

IA responsável

Usamos uma combinação das etapas a seguir para garantir que essas APIs de imagem sejam confiáveis, seguras e criadas com responsabilidade. Recomendamos revisar as práticas recomendadas descritas no Desenvolvimento Responsável de IA Generativa no Windows ao implementar recursos de IA em seu aplicativo.

Consulte também