.net 6.0图片转Base64部署到Linux系统上报The type initializer for ‘Gdip‘ threw an exception

news/2024/12/26 21:25:47/

在业务当中需要将图片文件转为Base64:windows上可以运行正常执行,部署到Linux系统上报The type initializer for ‘Gdip‘ threw an exception

图片转Base64代码如下

/// <summary>
/// 图片转为base64编码的文本
/// </summary>
/// <param name="ImageFileName"></param>
/// <returns></returns>
public static string ImgPathNameToBase64String(string ImageFileName)
{try{Bitmap bmp = new Bitmap(ImageFileName);//仅在 Windows 上支持 System.Drawing.Common。Linux系统会报错MemoryStream ms = new MemoryStream();bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);byte[] arr = new byte[ms.Length];ms.Position = 0;ms.Read(arr, 0, (int)ms.Length);ms.Close();String strBase64 = Convert.ToBase64String(arr);return strBase64;}catch (Exception ex){Console.WriteLine("图片转为base64编码的文本》异常:::" + ex);return "";}
}/// <summary>
/// 图片转为base64编码的文本
/// </summary>
/// <param name="ImageFileName"></param>
/// <returns></returns>
public static string ImgToBase64String(Stream stream)
{try{Bitmap bmp = new Bitmap(stream);//仅在 Windows 上支持 System.Drawing.Common。Linux系统会报错MemoryStream ms = new MemoryStream();bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);byte[] arr = new byte[ms.Length];ms.Position = 0;ms.Read(arr, 0, (int)ms.Length);ms.Close();String strBase64 = Convert.ToBase64String(arr);return strBase64;}catch (Exception ex){Console.WriteLine("图片转为base64编码的文本》异常:::" + ex);return "";}
}

搜索引擎上的文章解决方案:https://blog.csdn.net/u010476739/article/details/124317037
在这里插入图片描述
此文章中的问题与我的问题是相似的,由于我使用的是docker部署,我没有使用此解决方案;因为docker 容器与虚拟机很相似,容器类似于虚拟机,只是容器不是完整的操作系统,容器通常只包含必要的操作系统包和应用程序,这是它们的轻量级。不可能每次部署都往docker容器当中安装一些包,这样即增加部署时常(网络不好的情况下甚至会部署失败),还违反了容器的轻量级。如果各位网友不是使用容器化部署的话可以尝试使用此方案

在微软官方:https://learn.microsoft.com/zh-cn/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only

和另一个文章:https://blog.csdn.net/IT_rookie_newbie/article/details/126559363

这里表明System.Drawing.Common仅在 Windows 上支持
在这里插入图片描述
而我的方法当中有Bitmap bmp = new Bitmap() 是System.Drawing.Common类库的
在这里插入图片描述
Microsoft建议是替换类库
在这里插入图片描述
于是我换成FileStream fs = new FileStream() 到此问题解决了,代码如下

/// <summary>
/// 图片文件转换成Base64字符串
/// </summary>
/// <param name="fileName">文件绝对路径</param>
/// <returns></returns>
public static String ImgFileToBase64(string fileName)
{try{FileStream fs = new FileStream(fileName, FileMode.Open);byte[] bt = new byte[fs.Length];fs.Read(bt, 0, bt.Length);string strBase64 = Convert.ToBase64String(bt);fs.Close();return strBase64;}catch (Exception ex){Console.WriteLine("图片文件转换成Base64字符串》异常:::" + ex);return "";}
}

!!!记录遇到的bug问题,为遇到类似问题,可查看文章,寻找排查问题解决思路


http://www.ppmy.cn/news/138883.html

相关文章

左耳-16, 时间管理:如何利用好自己的时间?

前面我们讨论了如何争取到更多自己可以控制的时间&#xff0c;今天&#xff0c;我们接着再来聊另外一个话题——如何利用好自己的时间。对此&#xff0c;我有下面的这些心得和方法&#xff0c;如果你有更好的方法&#xff0c;也欢迎告诉我。 投资自己的时间 其实&#xff0c;…

快来 ,一起复习一下反射

背景 工作也有四年了&#xff0c;基础的东西许久不看有些遗忘。一起来复习一下吧 什么是反射&#xff1f; 反射是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能获取该类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能调用它的任意一个方法和属性…

Photoshop CS6 简体中文版

Adobe PhotoShop CS6是一款公告强大的图片编辑软件。Photoshop CS6比PhotoShop CS5加强3D图像编辑&#xff0c;采用新的暗色调用户界面&#xff0c;其他改进还有整合Adobe云服务、改进文件搜索等。华军软件园为您提供Photoshop CS6中文版下载。 Photoshop CS6 简体中文版普通下…

Adobe Photoshop CS6简体中文版

1. 右键软件压缩包选择解压到“Photoshop CS6”。资源地址&#xff1a;Adobe Photoshop CS6简体中文版 z 2. 进入解压好的文件夹&#xff0c;鼠标右击Set-up&#xff0c;选择以管理员的身份运行开始安装 3. 弹出如下对话框&#xff0c;我们选择忽略并继续 4. 选择简体中文&am…

Adobe Photoshop 2021 22.1.1.138中文版(win/mac)

转载自亿品元素 原文链接&#xff1a;http://www.epinv.com/post/7718.html Adobe Photoshop&#xff08;简称PS&#xff09;是全球最流行的图像及照片后期处理专业软件。当前最新版本号为&#xff1a;Photoshop 2021 22.1.1.138。Photoshop 新版本主要增加了Neural Filters&a…

如果我们使用大字符串作为 MySQL 索引键会发生什么

背景 正如我之前的文章里所解释的那样&#xff0c;B树的深度决定了MySQL在仅考虑使用索引的情况下的最坏查询性能。在SSD的帮助下&#xff0c;拥有一个比4层更深的B树应该是可以接受的。 那么下一个问题是&#xff1a;性能可能有多糟糕&#xff1f;在这里&#xff0c;我有意设…

2023年6月跟产品开发专家学NPDP产品经理认证课到这里

NPDP产品经理国际资格认证是国际公认的唯一的新产品开发专业认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 我们针对互联网时代的个人、互联网企业、与传统企业推出一系列学习。 课程从…

信通院公布2023低代码·无代码最新评估结果,阿里云两案例入选!

2023 年 5 月 19 日&#xff0c;由中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;、中国通信标准化协会主办&#xff0c;中国通信标准化协会云计算标准和开源推进委员会承办&#xff0c;企业数字化发展共建共享平台支持的“2023 低代码无代码产业大会”在北…