Как я могу конвертировать System.Byte [] в изображение? (C # оконные формы) - PullRequest
8 голосов
/ 09 августа 2010

У меня есть PictureBox элемент управления, я хочу отобразить в нем изображение. Я сохранил свои изображения в базе данных MS Access с этим типом данных: OLE Object. Мне трудно показать это снова. Пожалуйста, посмотрите на мой код, и вы, ребята, можете придумать решение для него. Я получил это Exception:

Unable to cast object of type 'System.Byte[]' to type 'System.Drawing.Image'.

Вот мой код:

OleDbCommand cmd = new OleDbCommand("SELECT IMAGE FROM IMAGES WHERE ID = 1", myConn));
            cmd.CommandType = CommandType.Text;
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            DataTable dt = new DataTable("dt");
            da.Fill(dt);

            if (dt != null)
            {              
                pictureBox1.Image = (Image)dt.Rows[0]["IMAGE"];
            }

1 Ответ

28 голосов
/ 09 августа 2010

Самый простой способ - использовать MemoryStream и вызывать Image.FromStream:

byte[] data = (byte[]) dt.Rows[0]["IMAGE"];
MemoryStream ms = new MemoryStream(data);
pictureBox1.Image = Image.FromStream(ms);

РЕДАКТИРОВАТЬ: Если вы столкнулись с проблемой, описанной Гансом, вам в основном нужно удалить этот заголовок. Как только вы получите массив байтов, содержащий только данные изображения, используйте приведенный выше код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...