Ошибка «Параметр недействителен» при преобразовании байтов в изображение

Я преобразовываю байты в изображение, но получаю сообщение об ошибке

Параметр недействителен

Я вставляю свой код. Пожалуйста, проверьте код и предположите, что я делаю все правильно или неправильно.

Image arr1 = byteArrayToImage(Bytess); 

Это функция.

 public static Image byteArrayToImage(byte[] byteArrayIn) { if (null == byteArrayIn || byteArrayIn.Length == 0) return null; MemoryStream ms = new MemoryStream(byteArrayIn); try { Process currentProcess1 = Process.GetCurrentProcess(); Image returnImage = Image.FromStream(ms); return returnImage; } catch (Exception ex) { MessageBox.Show(ex.Message); } } 

Я применил много методов и решений, но для меня это не сработало

Ваш ответ был бы оценен.

благодаря

попробуй это

  public Image byteArrayToImage(byte[] byteArrayIn) { System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter(); Image img = (Image)converter.ConvertFrom(byteArrayIn); return img; } 

Пробовав много вещей, я нашел способ, который имеет немного больше контроля. В этом примере вы можете указать формат пикселя и скопировать байты в битмап.

 byte[] buffer = GetImageBytes(); var bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb); var bitmap_data = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); Marshal.Copy(buffer, 0, bitmap_data.Scan0, buffer.Length); bitmap.UnlockBits(bitmap_data); var result = bitmap as Image; 

попробуй это,

 public Image byteArrayToImage(byte[] byteArrayIn) { Image returnImage = null; using (MemoryStream ms = new MemoryStream(byteArrayIn)) { returnImage = Image.FromStream(ms); } return returnImage; } 
  cmd.CommandText="SELECT * FROM `form_backimg` WHERE ACTIVE=1"; MySqlDataReader reader6= cmd.ExecuteReader(); if(reader6.Read()) { code4 = (byte[])reader6["BACK_IMG"]; //BLOB FIELD NAME BACK_IMG } reader6.Close(); MemoryStream stream = new MemoryStream(code4); //code4 is a public byte[] defined on top pictureBox3.Image = Image.FromStream(stream); 

Проблема в том, что вы неправильно ее используете из базы данных. Попробуйте изменить свой код следующим образом:

 while (registry.Read()) { byte[] image = (byte[])registry["Image"]; } 

В моем случае я получил ошибку, так как моя строка base64 имела неправильную кодировку перед вызовом Image.FromStream. Это сработало для меня в конце:

 byte[] bytes = System.Convert.FromBase64String(base64ImageString); using (MemoryStream ms = new MemoryStream(bytes)) { var image = Image.FromStream(ms); image.Save(filePath, System.Drawing.Imaging.ImageFormat.Png); } 
Давайте будем гением компьютера.