Преобразование байтового массива в изображение - PullRequest
82 голосов
/ 07 февраля 2012

Я хочу преобразовать байтовый массив в изображение.

Это код моей базы данных, откуда я получаю байтовый массив:

public void Get_Finger_print()
{
    try
    {
        using (SqlConnection thisConnection = new SqlConnection(@"Data Source=" + System.Environment.MachineName + "\\SQLEXPRESS;Initial Catalog=Image_Scanning;Integrated Security=SSPI "))
        {
            thisConnection.Open();
            string query = "select pic from Image_tbl";// where Name='" + name + "'";
            SqlCommand cmd = new SqlCommand(query, thisConnection);
            byte[] image =(byte[]) cmd.ExecuteScalar();
            Image newImage = byteArrayToImage(image);
            Picture.Image = newImage;
            //return image;
        }
    }
    catch (Exception) { }
    //return null;
}

Мой код преобразования:

public Image byteArrayToImage(byte[] byteArrayIn)
{
    try
    {
        MemoryStream ms = new MemoryStream(byteArrayIn,0,byteArrayIn.Length);
        ms.Write(byteArrayIn, 0, byteArrayIn.Length);
        returnImage = Image.FromStream(ms,true);//Exception occurs here
    }
    catch { }
    return returnImage;
}

Когда я достигаю строки с комментарием, возникает следующее исключение: Parameter is not valid.

Как я могу исправить то, что вызывает это исключение?

Ответы [ 11 ]

0 голосов
/ 07 февраля 2013

В большинстве случаев это неверные данные в столбце SQL.Это правильный способ вставить в столбец изображения:

INSERT INTO [TableX] (ImgColumn) VALUES (
(SELECT * FROM OPENROWSET(BULK N'C:\....\Picture 010.png', SINGLE_BLOB) as tempimg))

Большинство людей делают это неправильно таким образом:

INSERT INTO [TableX] (ImgColumn) VALUES ('C:\....\Picture 010.png'))
...