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