【问题标题】:How to transform image on SQL database to System.Drawing.Image?如何将 SQL 数据库中的图像转换为 System.Drawing.Image?
【发布时间】:2011-10-25 09:27:20
【问题描述】:

我目前正在使用 Visual Studio 2008 (VB.Net) 和 SQL Server 2008。我将图像保存在数据库中为 image。当我将它提取到我的代码中时,它是 System.Byte[],我无法将其转换为 System.Drawing.Image 以保存到我的 DevExpress(v10.2).XtraEditors.ImageEdit。

我试过了

Dim imgStream As MemoryStream = New MemoryStream(image, 0, image.Length)

Dim imgStream As MemoryStream = New MemoryStream(image)

但即便如此,我也无法调用 image.FromStream(imgStream)bitmap.FromStream(imgStream),因为我在尝试时收到“参数无效”。

编辑:

我们正在从以前使用 SQL 2000 的系统进行更新。当我运行以前的程序时,我可以在程序中看到图像。当我运行新的图像时,我迁移的任何图像都是“无效参数”,但我添加到数据库中的任何图像(通过程序上的输入)都是可见的。当我从旧数据库和新数据库中获取图像时,它们完全相同。迁移数据时我应该考虑 SQL 2000 和 SQL 2008 之间的差异吗?

【问题讨论】:

  • 数据库不是存放图片的地方。更好的方法是将图像路径存储在数据库中。列类型image 与图片无关,它可以保存任何二进制数据。
  • 不幸的是,这在我开始之前就已经设置好了,并且该程序将部署在多台计算机上,因此它需要是图像,因为每个人的计算机上都没有图像,也不会有相同的途径。

标签: vb.net visual-studio-2008 sql-server-2008 sql-server-2000


【解决方案1】:

试试这个:

Dim MyConverter as ImageConverter = new System.Drawing.ImageConverter()
Dim MyImage as Image = imageConverter.ConvertFrom(byteArray)

但是,此错误通常意味着您的输入数据无效。你有多确定你的字节数组包含有效的图像数据?

【讨论】:

  • 我得到了和以前一样的错误(参数无效)。我们正在更新以前的程序并传输数据。比较数据库中的两个图像给出相同的数据,我可以看到旧程序中的标志,所以我认为输入数据是有效的。
猜你喜欢
  • 2012-08-01
  • 2021-09-07
  • 2012-02-14
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 2011-01-25
相关资源
最近更新 更多