将字节转换为图像时出现错误“参数无效”
我将字节转换为图像但我收到错误
参数无效
我正在粘贴我的代码。 请检查代码,并建议我做对或错。
Image arr1 = byteArrayToImage(Bytess);
这是function。
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); }