【问题标题】:"parameter is not valid" while converting bytes to image using c#使用 c# 将字节转换为图像时出现“参数无效”
【发布时间】:2018-08-10 18:28:48
【问题描述】:

我使用 wamp 服务器 localhost 将图像保存到 MySql 数据库,但是当我尝试从 MySql 检索图像并将图像从字节转换为图像时,它给出的错误参数无效,我使用了许多技术和许多解决方案,但在徒劳的,我使用图像转换器和内存流,但对我来说没有用我正在粘贴我的代码,请帮助我,这非常重要。

byte[] img;

MySqlCommand cmd_image = new MySqlCommand("Select image from logindetails where Username = '" + txtUsername.Text + "'", con);
MySqlDataReader Image_Reader = cmd_image.ExecuteReader();
            while (Image_Reader.Read())
            {
                img = (byte[])Image_Reader["Image"];
            }

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

【问题讨论】:

  • 这很容易受到 sql 注入攻击。它实际上是在乞求被黑。
  • 回答这个问题唯一真正重要的是,图像以什么格式保存在数据库中?

标签: c# mysql arrays image byte


【解决方案1】:

ImageConverter 用于转换图像,而不是创建图像。使用下面的代码:

    Bitmap bitmap;
    using (MemoryStream memoryStream = new MemoryStream(img))
    {
        using (Image imageFromStream = Image.FromStream(memoryStream))
        {
            bitmap = new Bitmap(imageFromStream);
        }
    }
    pictureBox1.Image = bitmap;

请注意,如果您的字节数组不包含图像,您仍然会收到相同的错误。

【讨论】:

  • 我尝试了你的代码,但它给出了同样的错误
  • 和数组 img 有 13 个字节
  • @UsmanLiaqat logindetails 表中的列图像的数据类型是什么?
  • @Nyerguds 你是对的,我刚刚测试过。我以为它只是用于将图像存储到文件中。但实际上,在处理流之后,就无法再查看图像了。我已经调整了答案。
猜你喜欢
  • 2013-07-14
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
相关资源
最近更新 更多