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

news2024/11/26 0:30:38

在业务当中需要将图片文件转为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.coloradmin.cn/o/596104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CMake深度解析:掌握add_custom_command,精通Makefile生成规则

CMake深度解析&#xff1a;掌握add_custom_command&#xff0c;精通Makefile生成规则 1. CMake简介与基础知识1.1 CMake的基本概念&#xff08;CMake Basic Concepts&#xff09;1.1.1 项目&#xff08;Project&#xff09;1.1.2 目标&#xff08;Target&#xff09;1.1.3 命令…

terminalworks ASP.NET Core PDF 浏览器-Crack

ASP.NET Core 的 PDF 查看器 terminalworks在 ASP.NET Core 网页或应用程序中添加可靠的 PDF 查看器的简单方法。 我们的 Web PDF 查看器基于经过验证和测试的 Mozilla PdfJS 解决方案&#xff0c;该解决方案在 Firefox 中用作默认 PDF 查看器。我们专门设计了我们的查看器&…

窄带高清技术之百万级并发下的演唱会直播细节修复

史无前例&#xff0c;高清又不卡。 5月&#xff0c;百视TV联合上海人民广播电台、时代峰峻共同出品的《东方风云榜》&#xff0c;绚烂呈现一场三十周年音乐分享会时代少年团《理想之途》。有人说&#xff0c;这是一场似梦非梦的记忆。 演唱会由“乐园”、“少年”、“乌托邦”三…

Pyside6-第四篇-QCheckBox复选框

今天是Pyside6的第四篇内容。一起来看复选框。 QCheckBox。 class QCheckBox(QAbstractButton):"""QCheckBox(self, parent: Optional[PySide6.QtWidgets.QWidget] None) -> NoneQCheckBox(self, text: str, parent: Optional[PySide6.QtWidgets.QWidget] …

爱尔眼科四川省区2023“集善扶困(贫)健康行”公益行动圆满收官

红原县地处青藏高原东部&#xff0c;位于四川省西北部、阿坝藏族羌族自治州中部&#xff0c;这里山原向丘状高原过渡&#xff0c;空气稀薄、气候偏冷、紫外线强&#xff0c;这里生活着大量藏族同胞。 这里地势出行不便医疗资源有限&#xff0c;青少年近视防控问题、中老年人的白…

CentOS的安装

Centos的安装 1.创建新的虚拟机2. 自定义3.下一步4.创建虚拟空白光盘5.安装Linux系统和Centos 7 发行版6.命名虚拟机名称和选择磁盘位置7.处理器配置 主要看自己的电脑的情况8.设置虚拟机内存9.网络设置 nat10.选择IO控制器类型11.选择磁盘类型12.创建新虚拟磁盘13.设置磁盘容量…

元宇宙 代价高昂的失败

一直以来我对GIS范围内3维及VR实用化持怀疑态度&#xff0c;觉得它就是个坑&#xff01;因此总被三维狂热者和同行批评。三维这种东西最大的优点是直观易于理解&#xff0c;但最大的坏处也是直观易于理解&#xff01;搞的很多外行也以为自己很了解这些技术&#xff0c;跟风起哄…

vue——实现数据懒加载(可视区域内才进行数据加载)——技能提升

昨天部门会议&#xff0c;领导提出一个需求&#xff0c;就是当一个前端页面有上百个图表或者其它元素&#xff0c;对应的接口有许多时&#xff0c;为了体验效果&#xff0c;不能一次性加载全部的数据&#xff0c;只有当元素滚动到可视区域内时&#xff0c;再进行相应接口的调用…

记录--Js基础练习题目

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 1.使用js&#xff0c;在页面中打印以下图案 提示&#xff1a; document.write可以在页面中打印内容<br>在html中代表换行, 在html中代码空格 for(var i0;i<7;i){// 空格部分for(var j7;j>…

chatgpt赋能python:Python代写群:帮你高效解决编程难题

Python代写群&#xff1a;帮你高效解决编程难题 Python代写群是一个专业的平台&#xff0c;为需要编程作业或项目的人提供高质量的服务。在这里&#xff0c;你可以找到有经验的Python工程师&#xff0c;帮你解决各种各样的编程难题。 为什么选择Python代写群&#xff1f; Py…

【JS】1699- 重学 JavaScript API - WebSockets API

❝ 前期回顾&#xff1a; 1. Page Visibility API 2. Broadcast Channel API 3. Beacon API 4. Resize Observer API 5. Clipboard API 6. Fetch API 7. Performance API 8. Web Storage API ❞ WebSockets API 提供了一种在客户端和服务器之间建立持久连接的机制&#xff0c;使…

基于轻量级YOLOv5n/s/m三款模型开发构建基于无人机视角的高空红外目标检测识别分析系统,对比测试分析性能

有关于无人机目标检测和红外场景下的目标检测的项目在我之前的文章中都有实践经历了&#xff0c;但是将无人机和红外场景结合的目标检测项目还是很少的&#xff0c;本文的核心想法就是基于高空无人机场景开发构建目标检测系统。 前面相关博文如下&#xff0c;感兴趣的话可以自…

Python潮流周刊#4:Python 2023 语言峰会

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 你好&#xff0c;我是猫哥。这里记录每周值得分享的 Python 及通用技术内容&#xff0c;本期是特别加更版&#xff0c;聚焦于 Python 官方 2023 年语言峰会的系列博客。 由于公众号不支持外链&#xff0c;文中大量…

JetBrains的PHP集成开发环境PhpStorm 2023版本在Win10系统的下载与安装配置教程

目录 前言一、PhpStorm 安装二、使用配置总结 前言 PhpStorm是一款专为PHP开发人员设计的集成开发环境&#xff08;IDE&#xff09;。它提供了丰富的功能和工具&#xff0c;可以帮助开发人员更高效地编写、调试和部署PHP应用程序。 PhpStorm的主要特点&#xff1a; ——代码…

硬件大熊原创合集(2023/04-05更新)

04-05月份更新篇章&#xff1a; NFC模块化设计方案 一款射频芯片的layout设计指导案例-篇章1 04月份娃出生&#xff0c;连续两个月需要处理的各种事情比之前多了很多&#xff0c;还好慢慢地适应了这种节奏&#xff0c;并且逐渐开始挖掘出属于个人的时间。 有天夜里抱着娃哄睡时…

NIO之Buffer解读

目录 Buffer 简介 Buffer 的基本用法 使用步骤 使用 Buffer 的例子 使用 IntBuffer 的例子 Buffer 的 capacity、position 和 limit capacity position limit Buffer 的类型 Buffer 分配和读写数据 Buffer 分配 向 Buffer 中写数据 flip()方法 从 Buffer 中读取数…

C++ Lambda 表达式:深入理解与应用

C Lambda 表达式是 C11 标准引入的一项强大功能&#xff0c;它允许开发者以简洁、优雅的方式创建匿名函数对象。 本文将深入探讨 C Lambda 表达式的原理、语法和应用场景&#xff0c;帮助读者更好地理解和使用这一功能。 1. Lambda 表达式简介 Lambda 表达式是一种创建匿名函数…

18. Vue-element-template白天黑夜模式动态切换

两套主题动态切换 1. 去官网生成两套主题拷贝到 resources/src/assets/theme https://element.eleme.cn/#/zh-CN/theme 2. 也可以本地修改 element-variables.scss 然后运行et生成 安装 &#xff08;注意Node版本&#xff09; ➜ Genes-Admin git:(ogenes) sudo n 10.16.…

【车载开发系列】Autosar DEM基本概念

【车载开发系列】Autosar DEM基本概念 Autosar DEM基本概念 【车载开发系列】Autosar DEM基本概念一. 诊断事件管理(DEM)概念二. DEM的主要作用1、汽车检修提供数据2、汽车错误状态处理提供依据 三. DEM模块及关联模块关系1. 功能禁止模块FIM2. SWC和BSW3. NvM非易失性存储4. 诊…

分布式存储Ceph介绍及搭建

一&#xff1a;存储的类型 1.单机存储设备 ●DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备&#xff0c;提供块级别的存储 ●NAS&#xff08;…