C# netcore3.1项目前端修改图片,后端保存图片遇到的坑报错A generic error occurred in GDI+.
图片转base64后传递到后台,后天刚开始通过image.save保存提示报错A generic error occurred in GDI+。
经过百度和谷歌后解决了问题,这里总结一下解决思路。
首先,这个错误很常见,常见原因及解决这里列出:
1. 相应的帐户没有写权限。
解决方法:赋予 NETWORK SERVICE 帐户以写权限,赋予权限方法这里不做表述。
2. 指定的物理路径不存在。
解决方法:
在调用 Save 方法之前,先判断目录是否存在,若不存在,则创建。
if (!Directory.Exists(dirpath))
Directory.CreateDirectory(dirpath);
3.生成的文件名格式有误:
我这里就是这个错误,因为我保存的文件名是获取的当前时间,生成的格式是yyyy-MM-dd HH:mm:ss,这个格式也导致报这个错,经过
排查,发现是HH:mm:ss中的:导致的原因,最终将:移除,就能正常保存。
4.文件被锁定
有个简单的土方法解决,将bitmap复制一份并且释放掉之前的bitmap就可以保存了
例如:
Bitmap bmpTemp = new Bitmap(image);
Bitmap bmp = new Bitmap(bmpTemp);
bmpTemp.Dispose();
bmp.Save(image, ImageFormat.Jpeg);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?