Freigeben über


Erste Schritte mit ai Image Generation

KI-Bildgenerierungsfeatures werden durch Microsoft Foundry auf Windows unterstützt, indem eine Reihe von künstlicher Intelligenz gestützten, Stable Diffusion-basierten (Open-Source-KI-Modell für die Verarbeitung von Bildern) APIs im Windows App SDK bereitgestellt werden. Diese APIs können in Ihren Windows-Apps verwendet werden, um Bilder und Fotos mithilfe von Eingabeaufforderungen in natürlicher Sprache und generierenden Modellen auf Geräten zu erstellen, zu transformieren und zu verbessern.

DIE AI Image Generation ist für Effizienz und Leistung auf Windows Copilot+ PCs optimiert.

Api-Details finden Sie in der API-Referenz für KI-Imageerstellungsfeatures.

Voraussetzungen

Was kann ich mit der KI-Bildgenerierung tun?

Verwenden Sie ai Image Generation, um Eingabeaufforderungen in visuelle Artefakte umzuwandeln. Zu den unterstützten Features gehören:

  • Text-zu-Bild

    Generieren Sie Bilder aus beschreibenden Textaufforderungen. Nützlich für Illustrationen, Entwurf, angepasste Hintergründe und konzeptionelle Visualisierung.

  • Bild-zu-Bild

    Transformieren Sie ein vorhandenes Bild basierend auf textbezogenen Anleitungen, während die Struktur beibehalten wird. Hilfreich beim Styling, bei der Gestaltung und bei anderen Variationsmöglichkeiten.

  • Magische Füllung

    Füllen Sie maskierte Bereiche eines Bilds mit KI-generierten Inhalten. Hilfreich beim Entfernen von Objekten, reparieren von Bereichen und intuitiver Bearbeitung (komplexe Überarbeitungen durch Textaufforderungen anstelle manueller Tools).

  • Malbuchstil

    Konvertieren Sie Bilder in vereinfachte Konturen, die für ein Farbbuch oder eine ähnliche Bildungserfahrung verwendet werden können.

  • Neu entwerfen

    Wenden Sie künstlerische oder visuelle Stile auf vorhandene Bilder an, während Sie die Struktur beibehalten. Nützlich für kreative Filter, künstlerische Effekte oder Themen-Transformationen.

Examples

Führen Sie die folgenden grundlegenden Schritte aus, wenn Sie die AI-Bildgenerierungs-APIs verwenden.

  1. Stellen Sie sicher, dass das Modell mit EnsureReadyAsync bereit ist.
  2. Erstellen Sie eine ImageGenerator-Instanz .
  3. Wählen Sie den entsprechenden Generierungsworkflow (Textaufforderung, Bildeingabe oder Maske) aus.
  4. Rufen Sie die entsprechende Generationsmethode auf.
  5. Empfangen Sie die Ausgabe als ImageBuffer zum Anzeigen, Bearbeiten oder Speichern.

Generieren eines Bilds aus einer Textaufforderung (Text-zu-Bild)

In diesem Beispiel wird gezeigt, wie Sie ein Bild aus einer Textaufforderung generieren. "Ein schöner Sonnenuntergang über einem Bergsee".

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

Transformation eines Bildstils (Bild-zu-Bild)

In diesem Beispiel wird gezeigt, wie ein Foto basierend auf einer Textaufforderung in ein Ölbild umgewandelt wird. Insbesondere "Ölmalstil, dicke Pinselstriche, künstlerisch".

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

Transformieren eines Bildformats (Bild-zu-Bild-Komplex)

In diesem Beispiel wird gezeigt, wie ein Foto basierend auf einer Textaufforderung in ein Ölbild umgewandelt wird. Insbesondere "ein Ölgemälde, dicke Pinselstriche, reichhaltige Farbpalette, traditionelle Leinwand-Textur, realistische Beleuchtung, klassischer Kunststil, schichtige Farbe, hochdetailliert, dramatischer Kontrast, Impasto, strukturierte Leinwand".

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 Füllung mit Maske

In diesem Beispiel wird gezeigt, wie Sie eine Maske verwenden, um einen Bereich eines Bilds auszufüllen. Insbesondere "ein roter 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");
    }
}

Bild im Malbuchstil erstellen

In diesem Beispiel wird gezeigt, wie Sie ein Bild in einem Farbbuchstil generieren. Insbesondere eine "Katze im Raumschiff".

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

Generieren eines Bilds mit benutzerdefinierten ImageGenerationOptions-Parametern

In diesem Beispiel wird gezeigt, wie Sie ein Bild basierend auf einer Reihe von Inhaltsfiltern und Einschränkungen generieren. Insbesondere eine "Katze im Raumschiff" mit einem TextContentFilterSeverity von Niedrig und einem ImageContentFilterSeverity von 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}");
    }
}

Verantwortungsvolle KI

Wir haben eine Kombination der folgenden Schritte verwendet, um sicherzustellen, dass diese Imageerstellungs-APIs vertrauenswürdig, sicher und verantwortungsbewusst erstellt sind. Es wird empfohlen, die bewährten Methoden zu überprüfen, die bei der Implementierung von KI-Features in Ihrer App in der verantwortungsvollen generativen KI-Entwicklung unter Windows beschrieben sind.

Siehe auch