首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MediumBlob将MediumBlob数据转换为位图图像

问使用MediumBlob将MediumBlob数据转换为位图图像
EN

Stack Overflow用户
提问于 2015-08-13 10:22:34
回答 1查看 585关注 0票数 1

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

参数无效。

这是我的c#代码:

代码语言:javascript
复制
 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();

这是我在数据库中添加功能的映像:

代码语言:javascript
复制
 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;
    }

有人能帮我做这个吗。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-08-13 10:28:10

当你这样做时:

代码语言:javascript
复制
 MemoryStream ms = new MemoryStream(buffer);
 ms.Write(buffer, 0, buffer.Length);

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

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

另外-我建议在内存流和读取器周围设置一个using块。而且,如果您的Image<>类没有保留对Bitmap的引用,那么应该立即处理它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31985545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档