Как поместить изображение в графический блок из байта [] в C # - PullRequest
15 голосов
/ 06 марта 2012

У меня есть байтовый массив, который содержит двоичные данные изображения в растровом формате.Как отобразить его с помощью элемента управления PictureBox в C #?

Я прошел через несколько постов, перечисленных ниже, но не уверен, нужно ли мне преобразовывать массив байтов во что-то еще, прежде чем отправлять его в Picturebox.Буду признателен за вашу помощь.Спасибо!

Как поместить изображение в графический блок из растрового изображения Загрузить изображение Picturebox из памяти?

Ответы [ 6 ]

35 голосов
/ 06 марта 2012

Эта функция преобразует байтовый массив в растровое изображение, которое можно использовать для установки свойства 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;
}

Пример использования:

pictureBox.Image = ByteToImage(byteArr); // byteArr holds byte array value
6 голосов
/ 06 марта 2012
byte[] imageSource = **byte array**;
Bitmap image;
using (MemoryStream stream = new MemoryStream(imageSource))
{
   image = new Bitmap(stream);
}
pictureBox.Image = image;
2 голосов
/ 11 января 2017

Вы также можете преобразовать изображение PictureBox в байтовый массив, например,

MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] img = ms.ToArray();
1 голос
/ 09 января 2017
using System.IO;
byte[] img = File.ReadAllBytes(openFileDialog1.FileName);
MemoryStream ms = new MemoryStream(img);
pictureBox1.Image = Image.FromStream(ms);

или вы можете получить прямой доступ к этому,

pictureBox1.Image = Image.FromFile (openFileDialog1.FileName);

0 голосов
/ 11 января 2017

Если вы хотите использовать BinaryReader для преобразования, используйте следующее:

FileStream fs = new FileStream (openFileDialog1.FileName, FileMode.Open, FileAccess.Read);

BinaryReader br =новый BinaryReader (fs);

byte [] img = br.ReadBytes ((int) fs.Length);

0 голосов
/ 30 января 2014

Класс ImageConverter в пространстве имен System.Drawing может выполнять преобразование:

byte[] imageArray = **byte array**
ImageConverter converter = new ImageConverter();
pictureButton.Image = (Image)converter.ConvertFrom(imageArray);
...