Я хочу преобразовать массив байтов в изображение.
Это мой код базы данных, откуда я получаю массив байтов:
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;
}
Когда я дойду до строки с комментарием, возникает следующее исключение: Параметр недействителен.
Как я могу исправить то, что вызывает это исключение?
Первая Установка Этот Пакет:
Пакет Установки SixLabors. ImageSharp - Версия, 1.0.0-beta0007
[SixLabors. ImageSharp] [1] [1]: https://www.nuget.org/packages/SixLabors. ImageSharp
Затем использует Ниже Кода Для Массива байтов Броска Для Обработки изображений:
Image<Rgba32> image = Image.Load(byteArray);
Для Получают Использование ImageFormat Ниже Кода:
IImageFormat format = Image.DetectFormat(byteArray);
Для Видоизменяют Использование Изображения Ниже Кода:
image.Mutate(x => x.Resize(new Size(1280, 960)));
Один лайнер:
Image bmp = (Bitmap)((new ImageConverter()).ConvertFrom(imageBytes));