找回密码
 立即注册

QQ登录

只需一步,快速开始

Tachiro

高级会员

31

主题

90

帖子

1297

积分

高级会员

积分
1297

圣诞拼拼乐微信认证勋章

Tachiro
高级会员   /  发表于:2022-10-17 10:44  /   查看:2420  /  回复:3

使用 C1Excel + XLPictureShape 产生 xlsx 文件,
执行过程没有错误,但图片文件会被锁住(例如无法更名),除非我把程序关闭了
(如按钮1 所示)


我换了写法,但都会有问题,想问问看到底该怎么写才正确?

使用 Dispose() 写法,会引发 System.ArgumentException 的例外错误
Image img = Image.FromFile(file);
img.Dispose();
(如按钮2 所示)


使用 using 写法,会引发 GDI+ 的例外错误
using (FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read))
(如按钮3 所示)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-17 17:27:25
沙发
可以把文件流拷贝到内存流中,这个代码刚刚测试可行


  1.         Bitmap LoadImageFromFile(string filepath)
  2.         {
  3.             using (var fs = new FileStream(filepath, FileMode.Open))
  4.             {
  5.                 var memStream = new MemoryStream();
  6.                 fs.CopyTo(memStream);
  7.                 Image image = Image.FromStream(memStream);
  8.                 return (Bitmap)image;
  9.             }
  10.         }
复制代码
回复 使用道具 举报
Tachiro
高级会员   /  发表于:2022-11-21 09:57:10
板凳
谢谢回复,我参考您的代码,改成以下代码,是可行的!

  1. Image img;

  2. using (var bmpTemp = new Bitmap(filePath))
  3. {
  4.     img = new Bitmap(bmpTemp);
  5. }
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-21 10:58:42
地板
好的,那这个帖子就结贴了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部