Fork me on GitHub

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);

posted @   我是传奇818  阅读(634)  评论(0编辑  收藏  举报
编辑推荐:
· .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 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示