web-dev-qa-db-fra.com

Comment mettre une image dans un bloc d'image à partir d'un octet [] en C #

J'ai un tableau d'octets contenant des données binaires 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 insérer une image dans une zone d'image à partir de BitmapCharger une image Picturebox à partir de la mémoire?

14
Kevin

Cette fonction convertit un tableau d'octets en Bitmap, qui peut être utilisée pour définir la propriété Image de la boîte à images.

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
33
John Woo
byte[] imageSource = **byte array**;
Bitmap image;
using (MemoryStream stream = new MemoryStream(imageSource))
{
   image = new Bitmap(stream);
}
pictureBox.Image = image;
6
Wizetux

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();
2
Md Shahriar
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);

1
Md Shahriar

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

0
Md Shahriar

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);
0
DReimer