J’ai un tableau d’octets contenant des données binarys d’image au format bitmap. Comment puis-je l’afficher à l’aide du contrôle PictureBox en C #?
Je suis passé par quelques articles énumérés ci-dessous mais je ne suis pas sûr d’avoir besoin de convertir le tableau d’octets en quelque chose d’autre avant de l’envoyer à un PictureBox. J’apprécierais votre aide. Merci!
Comment mettre une image dans une zone d’image à partir de Bitmap Charger une image Picturebox à partir de la mémoire?
Cette fonction convertit un tableau d’octets en Bitmap pouvant être utilisé pour définir la propriété Image
de la boîte à Image
.
public static Bitmap ByteToImage(byte[] blob) { MemoryStream mStream = new MemoryStream(); byte[] pData = blob; mStream.Write(pData, 0, Convert.ToInt32(pData.Length)); Bitmap bm = new Bitmap(mStream, false); mStream.Dispose(); return bm; }
Exemple d’utilisation:
pictureBox.Image = ByteToImage(byteArr); // byteArr holds byte array value
byte[] imageSource = **byte array**; Bitmap image; using (MemoryStream stream = new MemoryStream(imageSource)) { image = new Bitmap(stream); } pictureBox.Image = image;
Vous pouvez également convertir une image pictureBox en tableau d’octets comme ceci,
MemoryStream ms = new MemoryStream(); pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); byte[] img = ms.ToArray();
using System.IO; byte[] img = File.ReadAllBytes(openFileDialog1.FileName); MemoryStream ms = new MemoryStream(img); pictureBox1.Image = Image.FromStream(ms);
ou vous pouvez y accéder directement,
pictureBox1.Image = Image.FromFile (openFileDialog1.FileName);
La classe ImageConverter de l’espace de noms System.Drawing peut effectuer la conversion:
byte[] imageArray = **byte array** ImageConverter converter = new ImageConverter(); pictureButton.Image = (Image)converter.ConvertFrom(imageArray);
Si vous voulez utiliser BinaryReader pour convertir, utilisez comme ceci,
FileStream fs = new FileStream (openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader (fs);
byte [] img = br.ReadBytes ((int) fs.Length);