【问题标题】:Converting MediumBlob data into an Bitmap Image using C#使用 C# 将 MediumBlob 数据转换为位图图像
【发布时间】:2015-08-13 10:22:34
【问题描述】:

我正在尝试将 MySQL 中的 mediumblob 数据转换为位图图像,但我做不到。我收到一个错误,即

参数无效。

这是我的 C# 代码:

 MySqlCommand select = new MySqlCommand("Select FaceName, FaceImage From TrainingSet1", conn);
                MySqlDataReader reader = select.ExecuteReader();



                while (reader.Read())
                {
                    labels.Add(reader["FaceName"].ToString());


                    byte[] buffer = (byte[])reader["FaceImage"];
                    MessageBox.Show("kw");

                    MemoryStream ms = new MemoryStream(buffer);

                    ms.Write(buffer, 0, buffer.Length);
                    Bitmap bmp = new Bitmap(ms); //prb is here
                    MessageBox.Show("remy");
                    Image<Gray, byte> image = new Image<Gray, byte>(bmp);
                    trainingImages.Add(image);
                }

                reader.Close();

这是我将图像添加到数据库中的功能:

 private byte[] ConvertToDBFormat(IImage InputImage)
    {
        Bitmap BmpImage = new Bitmap(InputImage.Bitmap);
        MemoryStream MyStream = new MemoryStream();
        BmpImage.Save(MyStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        byte[] ImageAsBytes = MyStream.ToArray();
        return ImageAsBytes;
    }

有人可以帮我解决这个问题吗?谢谢。

【问题讨论】:

    标签: c# mysql bitmap emgucv


    【解决方案1】:

    当你这样做时:

     MemoryStream ms = new MemoryStream(buffer);
     ms.Write(buffer, 0, buffer.Length);
    

    您首先使用缓冲区初始化内存流,然后立即用相同的数据覆盖它 - 将当前位置设置为流的末尾。当Bitmap 类尝试从中读取时 - 它不会得到任何东西。

    只需跳过Write 调用,内存流将提供字节数组中的数据。

    另外 - 我建议在内存流和阅读器周围设置一个 using 块。而且,如果你的 Image&lt;&gt; 类没有保留对 Bitmap 的引用,你应该立即处理它。

    【讨论】:

    • 即使在注释掉之后我仍然遇到同样的错误......这是我的完整code
    • 你在那个字节数组中到底有什么?完整的 bmp/png/jpg 还是原始图像数据?
    • 如果它只是没有标头的原始数据Bitmap 将无法知道如何处理它。你知道格式和大小吗?
    • 仅给定一个原始字节数组,无法知道。您需要图像的像素格式、每像素位数、行步长和尺寸才能继续。如果您可以显示生成和保存图像的代码,我们可能会提供帮助。
    • 好吧,我已经用图像插入方法编辑了我的问题,顺便说一下图片格式是 jpeg
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多