Partilhar via


Comece com a Geração de Imagens por IA

As funcionalidades de Geração de Imagens por IA são suportadas pela Microsoft Foundry no Windows através de um conjunto de APIs baseadas em inteligência artificial, alimentadas pelo Stable Diffusion (modelo de IA open-source usado para processar imagens), que são incluídas no Windows App SDK. Estas APIs podem ser usadas nas suas aplicações Windows para criar, transformar e melhorar imagens e fotografias usando prompts em linguagem natural e modelos generativos no dispositivo.

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

Para obter detalhes da API, consulte API ref for AI imaging features.

Pré-requisitos

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

Use a Geração de Imagens por IA para transformar prompts em artefactos visuais. Os recursos suportados incluem:

  • Texto em Imagem

    Gera imagens a partir de sugestões de texto descritivo. Útil para ilustrações, design, fundos personalizados e visualização conceptual.

  • Transformação de Imagem em Imagem

    Transforme uma imagem existente com base nas orientações textuais, preservando a estrutura. Útil para styling, tematização 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 editar de forma intuitiva (revisões complexas através de prompts de texto em vez de ferramentas manuais).

  • Estilo de Livro de Colorir

    Converta imagens em contornos simplificados que possam ser usados num livro de colorir ou numa experiência educativa semelhante.

  • Restyling

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

Examples

Siga estes passos básicos ao utilizar as APIs de Geração de Imagens por IA.

  1. Assegure que 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, introdução de imagem ou máscara).
  4. Invocar o método de geração correspondente.
  5. Receba a saída como um ImageBuffer para visualização, edição ou gravação.

Gerar uma imagem a partir de um prompt de texto (Text-to-Image)

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

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-para-Imagem)

Este exemplo mostra como transformar uma fotografia numa pintura a óleo baseada num prompt de texto. Especificamente, "estilo de pintura a óleo, pinceladas grossas, 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 para Imagem)

Este exemplo mostra como transformar uma fotografia numa pintura a óleo baseada num prompt de texto. Especificamente, "Uma pintura a óleo, pinceladas espessas, paleta de cores rica, textura tradicional de tela, iluminação realista, estilo clássico de belas artes, tinta em camadas, alto detalhe, 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 desportivo 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 ao estilo de livro para colorir

Este exemplo mostra como gerar uma imagem ao estilo de um 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 uma imagem utilizando os parâmetros personalizados de "ImageGenerationOptions"

Este exemplo mostra como gerar uma imagem com base num conjunto de filtros de conteúdo e restrições. Especificamente, um "Gato em 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}");
    }
}

Inteligência Artificial responsável

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

Consulte também