You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#从SQL加载图片至PictureBox失败,提示“参数无效”求助

问题原因及解决方案

问题出在图片存入SQL Server的代码中,存储的字节数组不完整或格式错误,导致读取时Image.FromStream无法解析,抛出"Parameter is not valid"错误。

错误点分析

  1. 字节数组长度计算错误:img.Size.Height * img.Height是重复计算图片高度,完全不符合图片实际的字节大小,会导致数组长度与实际图片数据不匹配,无法容纳完整内容。
  2. 使用tmpStream.Read()读取数据不可靠:该方法无法保证一次性读取所有流数据,容易丢失部分字节,造成图片数据损坏。

修正后的存入代码

Image img = Image.FromFile(opf.FileName);
using (MemoryStream tmpStream = new MemoryStream())
{
    img.Save(tmpStream, System.Drawing.Imaging.ImageFormat.Png);
    // 直接从MemoryStream获取完整的字节数组
    byte[] imageData = tmpStream.ToArray();
    // 执行将imageData存入SQL Server的操作(建议用参数化查询避免注入)
}

读取代码验证

你的读取代码本身无问题,只要存入的是完整的图片字节数据,以下代码可正常运行:

byte[] data = (byte[])(DT.Rows[0][18]);
using (MemoryStream mem = new MemoryStream(data))
{
    pictureBox1.Image = Image.FromStream(mem);
}

(用using包裹MemoryStream可确保资源正确释放)

内容的提问来源于stack exchange,提问作者user12235025

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 22:08:10