Kom igång med AI Image Generation

Microsoft Foundry i Windows har stöd för AI Image Generation-funktioner via en uppsättning AI-baserade API:er för stabil diffusion (AI-modell med öppen källkod som används för bearbetning av bilder) som levereras i Windows App SDK. Du kan använda dessa API:er i dina Windows-appar för att skapa, transformera och förbättra bilder och foton med hjälp av naturliga språkprompter och generativa modeller på enheten.

AI Image Generation är optimerad för effektivitet och prestanda på Windows Copilot+-datorer.

Api-information finns i API-referens för AI-avbildningsfunktioner.

Viktigt!

Krav för paketmanifest: Om du vill använda API:er för Windows AI-avbildning måste appen paketeras som ett MSIX-paket med funktionen systemAIModels som deklareras i .Package.appxmanifest Se dessutom till att manifestets MaxVersionTested attribut är inställt på en ny Windows-version (t.ex. 10.0.26226.0 eller senare) för korrekt stöd för Windows AI-funktioner. Om du använder äldre värden kan det orsaka "inte deklarerat av appen"-fel när modellen läses in.

<Dependencies>
  <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
  <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
</Dependencies>

Förutsättningar

  • Windows-version: Windows 11, version 24H2 (version 26100) eller senare
  • Windows App SDK version:Version 2.0 Experimental
  • Hardware: Copilot+ PC med en NPU (krävs)

Maskinvara som stöds

AI Image Generation körs på följande maskinvara:

Hardware Status Detaljer
NPU (Copilot+ PC) ✅ Tillgänglig Den enda maskinvaruväg som stöds. Se utvecklarguiden Copilot+ PCs.
GPU (grafikprocessor) ❌ Stöds inte Inte tillgängligt för GPU.
CPU ❌ Stöds inte Inte tillgängligt på CPU.

Modelltillgänglighet och nedladdning

AI Image Generation-modellen är optional på en Copilot+ PC – den är inte förinstallerad som standard, eftersom installationsstorleken är flera gigabyte. Första gången appen anropar EnsureReadyAsync laddas modellen ned i bakgrunden via Windows Update. Slutanvändare kan också ta bort modellen senare för att frigöra diskutrymme.

Det här beteendet matchar modelllivscykeln som används av andra stora valfria Windows AI-modeller – appen måste hantera ärendet "inte installerat ännu" explicit i stället för att anta att modellen finns.

Eftersom AI Image Generation-modellen är stor och inte finns som standard visar du en bekräftelsedialogruta innan du anropar EnsureReadyAsync så att användaren kan godkänna både lagringskostnaden och bakgrundsnedladdningen. Ett typiskt mönster:

  1. Anropa GetReadyState och förgrena baserat på det returnerade AIFeatureReadyState:

    • Ready — Modellen är installerad. fortsätta.
    • NotReady eller EnsureNeeded – visa dialogrutan med ditt medgivande (se nedan) och anropa EnsureReadyAsync endast om användaren samtycker.
    • NotSupportedOnCurrentSystem – enheten är inte en Copilot+ PC eller på annat sätt inte uppfyller kraven i Supported hardware. Erbjud en alternativ lösning och, när det är relevant, visa vilka maskinvarukrav som gäller så att användaren kan fatta ett välgrundat beslut om uppgradering.
  2. I dialogrutan med ditt medgivande förklarar du:

    • En valfri modell för avbildningsgenerering laddas ned (flera GB lagringsutrymme).
    • Nedladdningen sker i bakgrunden via Windows Update.
    • Användaren kan övervaka nedladdningsförloppet på Settings>Windows Update.
    • Användaren kan senare ta bort modellen på Inställningar>System>AI-komponenter om de inte längre vill ha den.

    Tip

    I användarriktade strängar (dialogtext, statusmeddelanden) refererar du till modellen som "bildgenereringsmodell" eller "valfri AI-modell" i stället för "SDXL" eller "Stabil diffusion". De flesta slutanvändare är inte bekanta med de underliggande modellnamnen och allmänna termer kommunicerar syftet tydligare.

  3. Medan EnsureReadyAsync pågår visar du en förloppsindikator i din app. Se Kom igång med Windows AI-API:er för mönstret för inläsningsgränssnitt.

När modellen har installerats

Modellen finns kvar på enheten tills användaren tar bort den. Användare hanterar installerade modeller – inklusive AI Image Generation-modellen – på Inställningar>System>AI-komponenter. Om användaren senare tar bort modellen ska appens nästa anrop till GetReadyState returneras NotReady eller EnsureNeeded och medgivandet + nedladdningsflödet upprepas.

Vad kan jag göra med AI Image Generation?

Använd AI Image Generation för att omvandla prompter till visuella artefakter. Funktioner som stöds är:

  • Text till bild

    Generera bilder från beskrivande textprompter. Användbart för illustrationer, design, anpassade bakgrunder och konceptuell visualisering.

  • Bild-till-bild

    Transformera en befintlig bild baserat på textvägledning samtidigt som strukturen bevaras. Användbart för styling, teman och andra varianter.

  • Magisk fyllning

    Fyll maskerade regioner i en bild med AI-genererat innehåll. Användbart för att ta bort objekt, reparera regioner och intuitiv redigering (komplexa revisioner via textfrågor i stället för manuella verktyg).

  • Färgläggning av bokformat

    Konvertera bilder till förenklade konturer som du kan använda för en färgbok eller liknande utbildningsupplevelse.

  • Ändra stil

    Använd konstnärliga eller visuella format på befintliga bilder samtidigt som strukturen bevaras. Användbart för kreativa filter, konstnärliga lägen eller tematransformeringar.

Examples

Följ dessa grundläggande steg när du använder API:er för AI Image Generation.

  1. Kontrollera att modellen är klar med EnsureReadyAsync.
  2. Skapa en ImageGenerator-instans .
  3. Välj lämpligt generationsarbetsflöde (textprompt, bildinmatning eller mask).
  4. Anropa motsvarande generationsmetod.
  5. Ta emot utdata som en ImageBuffer för visning, redigering eller sparande.

Generera en bild från en textprompt (text till bild)

Det här exemplet visar hur du genererar en bild från en textprompt. Mer specifikt, "En vacker solnedgång över en bergssjö".

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

Transformera ett bildformat (bild-till-bild)

Det här exemplet visar hur du omvandlar ett fotografi till en oljemålning baserat på en textprompt. Mer specifikt, "oljemålning stil, tjocka penseldrag, konstnärliga".

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

Transformera ett bildformat (bild-till-bild-komplex)

Det här exemplet visar hur du omvandlar ett fotografi till en oljemålning baserat på en textprompt. Mer specifikt, "En oljemålning, tjocka penseldrag, rik färgpalett, traditionell arbetsytestruktur, realistisk belysning, klassisk konststil, lagerfärg, hög detaljrikedom, dramatisk kontrast, impasto, texturerad duk".

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

Magisk fyllning med mask

Det här exemplet visar hur du använder en mask för att fylla en region i en bild. Mer specifikt "en röd sportbil".

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

Generera färgboksformatbild

Det här exemplet visar hur du genererar en bild i ett färgboksformat. Mer specifikt en "Katt i rymdskepp".

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

Generera avbildning med hjälp av anpassade ImageGenerationOptions-parametrar

Det här exemplet visar hur du genererar en bild baserat på en uppsättning innehållsfilter och begränsningar. Mer specifikt en "Katt i rymdskepp" med hjälp av en TextContentFilterSeverityLåg och en ImageContentFilterSeverityMinsta.

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 = new TextContentFilterSeverity { Hate = SeverityLevel.Low, Sexual = SeverityLevel.Low, Violent = SeverityLevel.Low, SelfHarm = SeverityLevel.Low };
    contentFilterOptions.ImageMaxAllowedSeverityLevel = new ImageContentFilterSeverity { AdultContentLevel = SeverityLevel.Minimum, GoryContentLevel = SeverityLevel.Minimum, RacyContentLevel = SeverityLevel.Minimum, ViolentContentLevel = SeverityLevel.Minimum };
    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}");
    }
}

Ansvarsfull AI

Följ ansvarsfulla AI-rekommendationer, inklusive transparens och användarförtroende, när du använder dessa API:er för att ändra eller generera bilder i dina Windows-appar. För att hjälpa användarna att förstå ursprunget och historiken för genererade eller ändrade bilder anger du autentiseringsuppgifter för innehåll enligt vad som anges i C2PA-standarderna (Coalition for Content Provenance and Authenticity).

Se Ansvarsfull generativ AI-utveckling i Windows för bästa praxis när du implementerar AI-funktioner i Windows-appar.

Se även