C#实现图片转Base64字符串.并支持markdown文件打开展示

news/2024/9/25 1:16:40

引用1.0.3版本或以上的Wesky.Net.OpenTools 包

1.0.3 版本提供图片转Base64字符串方案,并提供根据后缀名自动识别Mime类型,合成标准URI

开源项目地址:

Gitee:https://gitee.com/dreamer_j/open-tools.git
Github:https://github.com/LittleLittleRobot/OpenTools.git

为了简单操作,我直接把base64字符串,外面套一层,让它支持md文件展示。图片地址为桌面上个人公众号图片地址,格式类型为jpg

1 var file = @"XXX.jpg";
2 var data = Wesky.Net.OpenTools.Converter.ImageConvert.ConvertImageToBase64(file);
3 var mdString = $"![avatar]({data})";
4 Console.WriteLine(mdString);

 运行程序,得到base64字符串.base64字符串。base64字符串,使用格式:![avatar](base64字符串)的形式,即可被markdown所识别,并显示未原始图片。

 复制该全部字符串内容,粘贴到任意markdown文本编辑器内。以下我用Typora实验,可以看到自动解析出文本,并显示了我用来实验的图片。

核心代码解析:

 1 /// <summary>
 2 /// 将图片文件转换为 Base64 编码的字符串。
 3 /// Converts an image file to a Base64-encoded string.
 4 /// </summary>
 5 /// <param name="imagePath">图片文件的路径。Path to the image file.</param>
 6 /// <returns>返回 Base64 编码的图片字符串。Returns a Base64-encoded image string.</returns>
 7 public static string ConvertImageToBase64(string imagePath)
 8 {
 9     if (!File.Exists(imagePath))
10     {
11         throw new FileNotFoundException("指定的图片路径不存在。Specified image path does not exist.");
12     }
13     byte[] imageBytes = File.ReadAllBytes(imagePath);
14     string mimeType = GetMimeType(imagePath);
15     string base64String = Convert.ToBase64String(imageBytes);
16     return $"data:{mimeType};base64,{base64String}";
17 }

 

支持的图片格式为:

case ".bmp":return "image/bmp";
case ".gif":return "image/gif";
case ".jpg":
case ".jpeg":return "image/jpeg";
case ".png":return "image/png";
case ".tif":
case ".tiff":return "image/tiff";
case ".ico":return "image/x-icon";​

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/30880.html

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

相关文章

Tomcat中为什么要使用自定义类加载器

Tomcat 使用自定义类加载器主要是基于以下几个关键原因:1.应用隔离:Tomcat作为一个Web容器,能够同时部署和运行多个Web应用程序。每个应用可能依赖不同的库版本或者包含同名类,为了确保每个应用的类库相互独立,避免类冲突,Tomcat 为每个Web应用提供了一个独立的类加载器实…

OSCP靶机训练Kitoptrix Level 3

Vulnhub——KioptrixVM3 前期准备:kali攻击机:10.0.0.4 靶机:10.0.0.12 将两台机器都设置为NAT模式渗透过程: 第一步:存活主机探测 arp-scan -l第二步:端口扫描 nmap --min-rate 10000 -p- 10.0.0.12第三步:基本信息扫描 nmap -sT -sC -sV -O -p22,80 10.0.0.12第四步:…

OSCP靶机训练Kioptrix Level 4

Vulnhub——Kioptrix Level 4 前期准备:kali攻击机:10.10.10.12 靶机:10.10.10.15 将两台机器都设置为NAT模式渗透过程 1、首先是存活主机探测,确认目标是否在线 arp-scan -l2、然后对目标进行端口扫描, 确认目标开放了哪些端口以及服务3、开放了4个端口,首先目光集中在…

OSCP靶机训练Kioptrix Level 1

Vulnhub——Kioptrix Level 1 前期准备: ​ 1、kali攻击机:10.0.0.4 NAT模式 ​ 2、靶机:10.0.0.10 NAT模式 ​ 注意: ​ 该靶机默认为桥接模式,且在虚拟机中修改为NAT模式,在靶机启动之后又自动更改为了桥接模式 ​ 需要在靶机的配置文件中进行修改 ​ 将所有Bridg…

vcenter创建数据中心加入ESXI主机

vcenter创建数据中心加入ESXI主机右键选择vcenter主机,点新建数据中心 2、点确定 3、对Datacenter右键,然后选择添加主机 4、添加主机IP地址 5、添加用户密码,然后下一页 6、点是 7、会显示摘要,按下一页 8、分配许可证 9、按是 10、按下一页 11、虚拟机位置,不用…

SQL Server实战七:自定义数据类型、标量值、内嵌表值、多语句表值函数的操作

本文介绍基于Microsoft SQL Server软件,实现数据库用户自定义数据类型的创建、使用与删除,以及标量值、内嵌表值、多语句表值函数等用户定义函数的创建、使用、删除方法~本文介绍基于Microsoft SQL Server软件,实现数据库用户自定义数据类型的创建、使用与删除,以及标量值、…

Layui的进度条使用

我用的是 第二种上代码 首先引入 layui的css和js html部分<div class="layui-progress" lay-showpercent="true" style="margin-top:10px" lay-filter="demo-filter-progress"><div class="layui-progress-bar" l…

sh 不是内部或外部命令,也不是可运行的程序 或批处理文件。

我们在windows系统中执行:sh nacos-config.sh -h 127.0.0.1命令是报错的。 报错:sh 不是内部或外部命令,也不是可运行的程序 或批处理文件。 但是作为一名软件开发人员,我们的电脑上一般都是安装有git的。 这个时候,我们可以使用git执行上面的命令就可以了,因为git是安装…