Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les fonctionnalités de génération d’images par IA sont prises en charge par Microsoft Foundry sur Windows, via un ensemble d’API basées sur l’intelligence artificielle utilisant Stable Diffusion (modèle IA open source utilisé pour le traitement des images) fournies dans le SDK d'application Windows. Ces API peuvent être utilisées dans vos applications Windows pour créer, transformer et améliorer des images et des photos à l’aide d’invites en langage naturel et de modèles génératifs sur appareil.
La génération d’images IA est optimisée pour optimiser l’efficacité et les performances sur les PC Windows Copilot+.
Pour plus d’informations sur l’API, consultez la référence d’API pour les fonctionnalités d’imagerie IA.
Prerequisites
- Version de Windows : Windows 11, version 24H2 (build 26100) ou version ultérieure
- WinAppSDK version :Version 2.0 Expérimentale (2.0.0-Experimental3)
- Matériel: PC compatible NPU recommandé
Que puis-je faire avec ai Image Generation ?
Utilisez la génération d’images IA pour transformer les invites en artefacts visuels. Les fonctionnalités prises en charge sont les suivantes :
Texte à image
Générez des images à partir d’invites de texte descriptifs. Utile pour les illustrations, la conception, les arrière-plans personnalisés et la visualisation conceptuelle.
Image à image
Transformez une image existante basée sur des instructions textuelles tout en préservant la structure. Utile pour le style, le thème et d’autres variantes.
Remplissage magique
Remplissez les régions masquées d’une image avec du contenu généré par l’IA. Utile pour supprimer des objets, réparer des régions et modifier intuitivement (révisions complexes via des invites de texte au lieu d’outils manuels).
Style de livre de coloriage
Convertissez des images en contours simplifiés qui peuvent être utilisés pour un livre de coloration ou une expérience éducative similaire.
Restyle
Appliquez des styles artistiques ou visuels à des images existantes tout en préservant la structure. Utile pour les filtres créatifs, les modes artistiques ou les transformations thématiques.
Examples
Suivez ces étapes de base lors de l’utilisation des API de génération d’images IA.
- Vérifiez que le modèle est prêt à l’aide de EnsureReadyAsync.
- Créez une instance ImageGenerator .
- Sélectionnez le flux de travail de génération approprié (invite de texte, entrée d’image ou masque).
- Appelez la méthode de génération correspondante.
- Recevez la sortie sous forme d’ImageBuffer pour l’affichage, la modification ou l’enregistrement.
Générer une image à partir d’une invite de texte (texte à image)
Cet exemple montre comment générer une image à partir d’une invite de texte. Plus précisément, « Un beau coucher de soleil sur un lac de montagne ».
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}");
}
}
Transformer un style d’image (Image à image)
Cet exemple montre comment transformer une photographie en peinture à l’huile en fonction d’une invite de texte. Plus précisément, « style de peinture à l’huile, traits de pinceau épais, artistique ».
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");
}
}
Transformer un style d’image (complexe image à image)
Cet exemple montre comment transformer une photographie en peinture à l’huile en fonction d’une invite de texte. Plus précisément, « Une peinture à l’huile, traits de pinceau épais, palette de couleurs riches, texture de canevas traditionnelle, éclairage réaliste, style d’art classique, peinture superposée, détail élevé, contraste dramatique, impasto, canevas texturé ».
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}");
}
}
Remplissage magique avec masque
Cet exemple montre comment utiliser un masque pour remplir une région d’une image. Plus précisément, « une voiture de sport rouge ».
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");
}
}
Générer une image au style livre de coloriage
Cet exemple montre comment générer une image dans un style de livre de coloration. Plus précisément, un « Chat dans le vaisseau spatial ».
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}");
}
}
Générer une image à l’aide de paramètres ImageGenerationOptions personnalisés
Cet exemple montre comment générer une image basée sur un ensemble de filtres de contenu et de restrictions. Plus précisément, un « Chat dans un vaisseau spatial » à l’aide d’un NiveauFiltreTexte de Faible et d’un NiveauFiltreImage de 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}");
}
}
Intelligence artificielle responsable
Nous avons utilisé une combinaison des étapes suivantes pour garantir que ces API d’imagerie sont fiables, sécurisées et générées de manière responsable. Nous vous recommandons de consulter les meilleures pratiques décrites dans développement d’IA responsable sur Windows lors de l’implémentation de fonctionnalités IA dans votre application.