gpt4 book ai didi

c# - 尝试使用 Image.Save 时出现 "A generic error occurred in GDI+"

转载 作者:太空狗 更新时间:2023-10-29 22:02:54 25 4
gpt4 key购买 nike

我正在开发 Outlook 2010 加载项,并从序列化的 XML 文件加载图像。图像加载正常,并且能够毫无问题地将它分配给 Winform 上的 pictureBox 对象。对象保存在

[XmlIgnore]
public Bitmap Image
{
get { return this.templateImage; }
set { this.templateImage = value; }
}

当我尝试将物理文件保存到硬盘上时,我正在做:

string filePath = Path.Combine(dirPath, item.Id + ".jpg");
try
{
item.Image.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception e)
{
Debug.WriteLine("DEBUG::LoadImages()::Error attempting to create image::" + e.Message);
}

并且我得到一个 GDI+ 中发生的一般错误。我检查了该文件夹的写权限,它确实有写权限。我不确定这里出了什么问题。我还将 ImageFormat 更改为 bmp 和 png 等等,以查看它是否是转换问题......但事实并非如此。有人会建议尝试什么吗?

最佳答案

感谢 Simon Whitehead 在评论中回答这个问题。他说,“3) 确保该文件没有被其他任何东西(包括您的代码)使用。”

所以问题是我自己的代码正在使用 item.Image 对象,并阻止 GDI+ 对其调用 dispose() 方法。解决方案是将该对象复制到一个新对象中,然后使用该对象“写入”。结果代码如下:

try
{
using (Bitmap tempImage = new Bitmap(item.Image))
{
tempImage.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
}
}
catch (Exception e)
{
Debug.WriteLine("DEBUG::LoadImages()::Error attempting to create image::" + e.Message);
}

关于c# - 尝试使用 Image.Save 时出现 "A generic error occurred in GDI+",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14866603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com