2009-02-24 6 views
12

J'ai un byte[] qui est représenté par un Image. Je télécharge ce Image via un WebClient. Lorsque le WebClient a téléchargé l'image et que je la référence en utilisant son URL, j'obtiens un byte[]. Ma question est, comment puis-je charger un byte[] dans un élément Image dans WPF? Je vous remercie.Charger un octet [] dans une image au moment de l'exécution

Note: Ceci est complémentaire à la question que j'ai posée ici: Generate Image at Runtime. Je n'arrive pas à faire fonctionner cette approche, alors j'essaie une approche différente.

+0

Veuillez noter que je cherche à charger un octet [] dans une instance System.Windows.Controls.Image. Pas une instance System.Drawing.Image comme tout le monde l'a aimablement souligné. – user70192

Répondre

5

Vous pouvez utiliser un BitmapImage et définir son StreamSource sur un flux contenant les données binaires. Si vous souhaitez effectuer une stream d'un byte[], utilisez un MemoryStream:

MemoryStream stream = new MemoryStream(bytes); 
21

Créer une BitmapImage du MemoryStream comme ci-dessous:

MemoryStream byteStream = new MemoryStream(bytes); 
BitmapImage image = new BitmapImage(); 
image.BeginInit(); 
image.StreamSource = byteStream; 
image.EndInit(); 

Et en XAML vous pouvez créer un contrôle Image et définissez le image ci-dessus comme la propriété Source.

+0

Cela ne fonctionnerait-il pas seulement pour WinForms? – configurator

+0

Mis à jour le réponse –

1

Dans NET Framework 4,0

using System.Drawing; 
using System.Web; 

private Image GetImageFile(HttpPostedFileBase postedFile) 
{ 
    if (postedFile == null) return null; 
    return Image.FromStream(postedFile.InputStream); 
} 
1

Une façon que je me suis dit comment faire en sorte qu'il était à la fois rapide et sûr de fil a été la suivante:

var imgBytes = value as byte[]; 
if (imgBytes == null) 
    return null; 
using (var stream = new MemoryStream(imgBytes)) 
    return BitmapFrame.Create(stream,BitmapCreateOptions.None, BitmapCacheOption.OnLoad); 

Je jeté que dans un convertisseur pour mon application WPF après avoir exécuté les images comme Varbinary de la DB.

Questions connexes