J'utilise ce code pour écrire un tableau d'octets dans un fichier BMP:Créer un BitmapImage à partir d'un tableau d'octets et l'afficher sur un objet Image UWP Raspberry Pi 3
private async void ScriviBMP()
{
using (Stream stream = immagineBitmap.PixelBuffer.AsStream())
{
await stream.WriteAsync(arrayImmagine, 0, arrayImmagine.Length);
}
StorageFolder folder = KnownFolders.PicturesLibrary;
if (folder != null)
{
StorageFile file = await folder.CreateFileAsync("area2_128x128" + ".bmp", CreationCollisionOption.ReplaceExisting);
using (var storageStream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, storageStream);
var pixelStream = immagineBitmap.PixelBuffer.AsStream();
var pixels = new byte[pixelStream.Length];
await pixelStream.ReadAsync(pixels, 0, pixels.Length);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)immagineBitmap.PixelWidth, (uint)immagineBitmap.PixelHeight, 48, 48, pixels);
await encoder.FlushAsync();
}
}
}
Ensuite, j'utilise ce Code pour afficher l'image BMP dans un objet image
private async void VisBMP()
{
var file = await KnownFolders.PicturesLibrary.GetFileAsync("area2_128x128.bmp");
using (var fileStream = (await file.OpenAsync(Windows.Storage.FileAccessMode.Read)))
{
var bitImg = new BitmapImage();
//bitImg.UriSource = new Uri(file.Path);
bitImg.SetSource(fileStream);
image.Source = bitImg;
}
}
ces fonctions prennent environ 400 millisecondes pour terminer le processus, qui est beaucoup de temps. Existe-t-il un moyen d'éviter l'utilisation d'un fichier BMP et d'utiliser uniquement un flux pour afficher l'image sur l'objet image? Il peut être que le débogage du programme peut ralentir les processus? J'utilise Visual Studio 2015.
Est-ce que 'immagineBitmap' est un WriteableBitmap? Vous pouvez ensuite l'assigner directement à la propriété Source du contrôle Image, comme 'image.Source = immagineBitmap;' – Clemens