将字节转换为图像时出错“参数无效”

时间:2013-07-16 04:03:29

标签: c# .net image bytearray memorystream

我正在将字节转换为图像但我收到错误

  

参数无效

我正在粘贴我的代码。请检查代码,并建议我做对或错。

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);
          }
    }

我应用了很多技巧和解决方案,但它对我不起作用

您的回答将不胜感激。

由于

6 个答案:

答案 0 :(得分:9)

试试这个

    public Image byteArrayToImage(byte[] byteArrayIn)
    {

        System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
        Image img = (Image)converter.ConvertFrom(byteArrayIn);

        return img;
    }

答案 1 :(得分:3)

在尝试了很多东西之后,我找到了一种更有控制力的方法。 在此示例中,您可以指定像素格式并将字节复制到位图。

var parent = $("#select_name_chosen");
var childUl = parent.find('.chosen-results');
childUl.append("<li class='active-results' data-option-array-index='0'>name</li>");

答案 2 :(得分:0)

试试这个,

public Image byteArrayToImage(byte[] byteArrayIn)
{
     Image returnImage = null;
     using (MemoryStream ms = new MemoryStream(byteArrayIn))    
     {   
         returnImage = Image.FromStream(ms);     
     }
     return returnImage;
}

答案 3 :(得分:0)

            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);

答案 4 :(得分:0)

问题是因为您从数据库中错误地引入了它。尝试更改您的代码:

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

答案 5 :(得分:0)

在我的情况下,我得到了错误,因为我的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);
}