C#将条码图片存入crpReport时提示object不含Save定义如何解决?
错误原因
你定义的ImageToByte2方法入参类型设为了object,而object是C#所有类型的基类,本身没有内置Save方法,运行时自然无法找到对应成员,触发该报错。
解决方案
首先确认条码生成方法bar.Encode()的返回值类型,绝大多数条码生成库的Encode方法返回的都是System.Drawing.Image类型,你只需要把方法入参的类型从object改成System.Drawing.Image即可。
优化后的完整代码如下:
private byte[] ImageToByte2(System.Drawing.Image img) { byte[] byteArray = new byte[1]; using (MemoryStream stream = new MemoryStream()) { img.Save(stream, System.Drawing.Imaging.ImageFormat.Png); // 无需手动调用Close,using块结束会自动释放流资源 byteArray = stream.ToArray(); } return byteArray; }
如果你确实需要保留object类型的入参,也可以在方法内先做类型校验和转换,这种方式兼容性更强但存在转换失败的风险:
private byte[] ImageToByte2(object img) { // 先校验入参是否为Image类型 if (img is not System.Drawing.Image realImage) { throw new ArgumentException("传入参数不是有效的Image对象", nameof(img)); } using (MemoryStream stream = new MemoryStream()) { realImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png); return stream.ToArray(); } }
内容的提问来源于stack exchange,提问作者patipat nuntapet
相关产品推荐
相关产品推荐

