我正在尝试将MySQL中的中介数据转换为位图图像,但我做不到。我收到了一个错误
参数无效。
这是我的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;
}有人能帮我做这个吗。谢谢。
发布于 2015-08-13 10:28:10
当你这样做时:
MemoryStream ms = new MemoryStream(buffer);
ms.Write(buffer, 0, buffer.Length);首先使用缓冲区初始化内存流,然后用相同的数据对其进行覆盖--将当前位置设置为流的末尾。当Bitmap类尝试从它中读取-它不会得到任何东西。
只需跳过Write调用,内存流将从字节数组中提供数据。
另外-我建议在内存流和读取器周围设置一个using块。而且,如果您的Image<>类没有保留对Bitmap的引用,那么应该立即处理它。
https://stackoverflow.com/questions/31985545
复制相似问题