C# 检索图像时参数无效

C# 检索图像时参数无效,c#,mysql,c#-4.0,C#,Mysql,C# 4.0,当我检索一个大小超过250kb的图像时,它总是会得到一个错误“parameter argument invalid”有两个选项可以解决这个问题: 使用图像转换器: 或者尝试先将二进制数据加载到内存流中: 哪一行代码导致了错误?您应该在新的MySqlCommand中使用绑定参数而不是文本插值,以避免SQL注入。另外,在Image.FromStream(ms)处命名列,而不是使用*@RobertHarvey line error;短语“参数参数无效”不适用于谷歌。请提供您收到的错误消息的确切措辞。@

当我检索一个大小超过250kb的图像时,它总是会得到一个错误“parameter argument invalid”

有两个选项可以解决这个问题:

  • 使用图像转换器:
  • 或者尝试先将二进制数据加载到内存流中:

  • 哪一行代码导致了错误?您应该在新的MySqlCommand中使用绑定参数而不是文本插值,以避免SQL注入。另外,在Image.FromStream(ms)处命名列,而不是使用*@RobertHarvey line error;短语“参数参数无效”不适用于谷歌。请提供您收到的错误消息的确切措辞。@Ferdy,您确认了图像数据没有损坏吗。当您传递的流没有有效的图像格式时,Image.FromStream方法返回ArgumentException。
    string nama = dgGambar1.Rows[e.RowIndex].Cells["nama_gambar"].FormattedValue.ToString();
    btnTambahDataBarang.Enabled = false;
    koneksi.Open();
    MySqlCommand command = new MySqlCommand("SELECT * FROM and_bwi_gambar WHERE nama_gambar = '" + nama + "'", koneksi);
    MySqlDataReader rd;
    rd = command.ExecuteReader();
    while (rd.Read())
    {
      txtGambar1.Text = rd.GetValue(2).ToString();
      byte[] img = (byte[])rd.GetValue(3);
      MemoryStream ms = new MemoryStream(img);
      pbGambar1.Image = Image.FromStream(ms);
    }
    koneksi.Close();
    
        byte[] buffer = (byte[])rd.GetValue(3);
        using(var memStream = new MemoryStream(buffer))
        {
            var ic = new System.Drawing.ImageConverter();
            pbGambar1.Image = (System.Drawing.Image)ic.ConvertFrom(stream.ReadAllBytes());
        }
    
        byte[] buffer = (byte[])rd.GetValue(3);
        using(var memStream = new MemoryStream(buffer))
        {
            memStream.Position = 0;
            pbGambar1.Image = System.Drawing.Image.FromStream(memStream, false);
        }
    }