Delen via


Aan de slag met AI-afbeeldingsgeneratie

Functies voor AI-afbeeldingsgeneratie worden ondersteund door Microsoft Foundry op Windows via een set AI-ondersteunde API's die zijn aangedreven door Stable Diffusion (een opensource AI-model dat wordt gebruikt voor het verwerken van afbeeldingen) en worden geleverd in de Windows App SDK. Deze API's kunnen worden gebruikt in uw Windows-apps om afbeeldingen en foto's te maken, transformeren en verbeteren met behulp van prompts in natuurlijke taal en generatieve modellen op het apparaat.

AI Image Generation is geoptimaliseerd voor efficiëntie en prestaties op Windows Copilot+ pc's.

Voor API-details, zie API-referentie voor AI-imagingfuncties.

Vereiste voorwaarden

Wat kan ik doen met AI Image Generation?

Gebruik AI Image Generation om prompts om te zetten in visuele artefacten. Ondersteunde functies zijn onder andere:

  • Tekst naar afbeelding

    Afbeeldingen genereren op basis van beschrijvende tekstprompts. Handig voor illustraties, ontwerp, aangepaste achtergronden en conceptuele visualisatie.

  • Afbeelding naar afbeelding

    Transformeer een bestaande afbeelding op basis van tekstrichtlijnen met behoud van de structuur. Handig voor stijlen, thema's en andere variaties.

  • Magic Fill

    Gemaskeerde regio's van een afbeelding vullen met door AI gegenereerde inhoud. Handig voor het verwijderen van objecten, het herstellen van regio's en intuïtief bewerken (complexe revisies via tekstprompts in plaats van handmatige hulpmiddelen).

  • Kleurboek stijl

    Converteer afbeeldingen naar vereenvoudigde overzichten die kunnen worden gebruikt voor een kleurenboek of vergelijkbare educatieve ervaring.

  • Opnieuw stijlen

    Pas artistieke of visuele stijlen toe op bestaande afbeeldingen terwijl de structuur behouden blijft. Handig voor creatieve filters, artistieke modi of thematransformaties.

Voorbeelden

Volg deze basisstappen bij het gebruik van de AI Image Generation-API's.

  1. Zorg ervoor dat het model gereed is met EnsureReadyAsync.
  2. Maak een ImageGenerator-exemplaar .
  3. Selecteer de juiste generatiewerkstroom (tekstprompt, afbeeldingsinvoer of masker).
  4. Roep de bijbehorende generatiemethode aan.
  5. Ontvang de uitvoer als imagebuffer voor het weergeven, bewerken of opslaan.

Een afbeelding genereren op basis van een tekstprompt (tekst-naar-afbeelding)

In dit voorbeeld ziet u hoe u een afbeelding genereert op basis van een tekstprompt. Met name "Een prachtige zonsondergang over een bergmeer".

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

Een afbeeldingsstijl transformeren (afbeelding-naar-afbeelding)

In dit voorbeeld ziet u hoe u een foto transformeert in een olieschilderij op basis van een tekstprompt. Met name "olieschilderstijl, dikke penseelstreken, artistiek".

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

Een afbeeldingsstijl transformeren (Image-to-Image-complex)

In dit voorbeeld ziet u hoe u een foto transformeert in een olieschilderij op basis van een tekstprompt. Specifiek: "Een olieschildering, dikke penseelstreken, rijk kleurenpalet, traditioneel canvaspatroon, realistische belichting, klassieke kunststijl, gelaagde verf, hoog detail, dramatisch contrast, impasto, patroonpapier".

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

Magische opvulling met masker

In dit voorbeeld ziet u hoe u een masker gebruikt om een regio van een afbeelding te vullen. Met name "een rode sportwagen".

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

Afbeelding van kleurboekstijl genereren

In dit voorbeeld ziet u hoe u een afbeelding genereert in een kleurboekstijl. Met name een 'Kat in ruimteschip'.

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

Afbeelding genereren met behulp van aangepaste ImageGenerationOptions-parameters

In dit voorbeeld ziet u hoe u een afbeelding genereert op basis van een set inhoudsfilters en -beperkingen. Met name een 'Kat in ruimteschip' met behulp van een TextContentFilterSeverity of Low en een ImageContentFilterSeverity of Minimum.

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

Verantwoorde AI

We hebben een combinatie van de volgende stappen gebruikt om ervoor te zorgen dat deze imaging-API's betrouwbaar, veilig en op verantwoorde wijze zijn gebouwd. We raden u aan de beste praktijken te bekijken die beschreven staan in Responsible Generatieve AI-ontwikkeling op Windows bij het implementeren van AI-functies in uw app.

Zie ook