【问题标题】:Bitmap throwing exception while read from MemoryStream using ms access [duplicate]使用 ms 访问从 MemoryStream 读取位图时抛出异常 [重复]
【发布时间】:2019-05-23 09:07:55
【问题描述】:

我正在从数据库中检索图片,我想将其显示到图片框。得到异常“不是有效的参数”

我已经用谷歌搜索过了,几乎没有解决我的问题。

while (reader.Read())
{
      byte[] data = (Byte[])reader["P1"];
      MemoryStream mStream = new MemoryStream(); 
      mStream.Write(data, 0, Convert.ToInt32(data.Length));
      Bitmap bm = new Bitmap(mStream, false);
      mStream.Dispose();
      pictureBox1.Image = bm;
}

它在“Bitmap bm = new Bitmap(mStream, false);”上有错误 我的 ms access 数据库中的数据有问题吗?

heres the printscreen of my code

【问题讨论】:

  • 如有需要我可以提供ms access数据库供您参考
  • 你为什么不用MemoryStream mStream = new MemoryStream(data);?这样你使用它可能会打开一个写流,它不能用作输入流来读取位图的数据。或者至少在从流中读取之前使用Seek(0, SeekOrigin.Begin);(使用new MemoryStream(data)时不需要)
  • 谢谢@Julo,我现在就试试你的建议......然后我会告诉你它是否有效。
  • 试试 TheGeneral 的答案。它对Bitmap 类的使用更好(正确)。
  • @Dodong 请停止将数据库发送给人们:“寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在在问题本身中重现它所需的最短代码。”如果问题不是问题的一部分,那么您的问题对未来的读者没有任何价值。请阅读How to Ask 了解标题的重要性,因为“有人检查我的代码有什么问题吗...” 没有任何价值。

标签: c# bitmap ms-access-2010 memorystream


【解决方案1】:

如果这不起作用,那么你的图像有问题

using (var ms = new MemoryStream(imageData))
{
   // lets be be good and dispose any previous images
   pictureBox1.Image?.Dispose();
   pictureBox1.Image = new Bitmap(ms);
}

如果失败,则尝试将其写入文件并查看它是否在任何图像编辑器中打开

【讨论】:

  • 我会试试你的评论@TheGeneral,如果可行的话,我会在这里发表评论..
  • 它失败了,我可以把数据库发给你吗?检查是否有错误?
  • @Dodong 简而言之不,谁知道你潜伏着什么病毒。您是否将字节保存到文件并使用图像编辑器检查其是否为有效图像
  • 这个数据库实际上来自一个 mysql 数据库,我使用 navicat 将它导出到 ms 访问。将 mysql blob 导出到 ms 访问是否有问题?
  • @Dodong 我不知道,您是否尝试过将图像保存到文件并进行测试?这就是你应该担心的......File.WriteAllBytes
【解决方案2】:

试试下面:

 if (reader.Read())
    {
           byte[] data = (Byte[])reader["P1"];
           using (MemoryStream mStream = new    MemoryStream(data))
              {
                   Bitmap bm = new Bitmap(mStream);

                   pictureBox1.Image = bm;
              }
     }

【讨论】:

  • 它失败了:(,我可以把数据库发给你看看是否有问题吗?
  • 错误在哪一行?
  • 我可以把数据库发给你吗?看看里面有没有错?
  • 使用任何工具在线试用。无需发送数据库。
  • @SonalBorkar 你是对的(我也完全不同意这是我的个人观点,与网站的指导没有必要匹配)。 (阅读完后将此评论标记为“不再需要”)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 2019-07-22
  • 2021-05-01
  • 2021-12-19
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多