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

base64,markdown · 浏览次数 : 18

小编点评

**代码解析:** ```csharp public static string ConvertImageToBase64(string imagePath) { // 检查图片文件是否存在 if (!File.Exists(imagePath)) { // 抛出FileNotFoundException异常,指定图片路径不存在 throw new FileNotFoundException($"指定的图片路径不存在。Specified image path does not exist."); } // 获取图片文件的MIME类型 byte[] imageBytes = File.ReadAllBytes(imagePath); string mimeType = GetMimeType(imagePath); // 生成Base64编码的图片字符串 string base64String = Convert.ToBase64String(imageBytes); // 返回Base64编码的图片字符串 return $"data:{mimeType};base64,{base64String}"; } ``` **功能:** 1. 检查图片文件是否存在。 2. 获取图片文件的MIME类型。 3. 将图片数据转换为Base64编码。 4. 返回Base64编码的图片字符串。 **支持的图片格式:** * .bmp * .gif * .jpg * .jpeg * .png * .tif * .tiff * .ico

正文

引用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";​

 

 

 

与C#实现图片转Base64字符串.并支持markdown文件打开展示相似的内容:

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

引用1.0.3版本或以上的Wesky.Net.OpenTools 包 1.0.3 版本提供图片转Base64字符串方案,并提供根据后缀名自动识别Mime类型,合成标准URI 开源项目地址: Gitee:https://gitee.com/dreamer_j/open-tools.git Github

C# WinForm控件及其子控件转成图片(支持带滚动条的长截图)

概述(Overview) 参考了网上的分享,感觉都不太理想:1.一个控件内如果包含多个子控件时没有考虑顺序问题;2.超出控件可显示区域时不能长截图,有滚动条会多余截取了滚动条。这个随笔旨在解决这个问题,实现带滚动条时可以长截图,并且给出了在多个子控件的情况下如何控制截图顺序的代码。有用可以点个赞。引

前端使用 Konva 实现可视化设计器(7)- 导入导出、上一步、下一步

请大家动动小手,给我一个免费的 Star 吧~ 这一章实现导入导出为JSON文件、另存为图片、上一步、下一步。 github源码 gitee源码 示例地址 导出为JSON文件 提取需要导出的内容 getView() { // 复制画布 const copy = this.render.stage.c

图解B树及C#实现(1)

前言 B树(B-tree),也常被记作 B-树,其中“-”不发音。B树的发明者 Rudolf Bayer 和 Edward M. McCreight 并没有给B树中的 B 明确的定义,大家也不必对此纠结太多。 B+树是B树的变体,两者的适用场景是不一样的,以后也会给大家带来B+树的介绍。 本系列将用

图解B树及C#实现(2)数据的读取及遍历

前言 本文为系列文章 B树的定义及数据的插入 数据的读取及遍历(本文) 数据的删除 前一篇文章为大家介绍了 B树 的基本概念及其插入算法。本文将基于前一篇的内容,为大家介绍插入到 B树 中的数据该怎么读取及遍历, 本文的代码基于前一篇文章的代码,已经实现的功能可能会被省略,只介绍新增的功能。 在本文

图解B树及C#实现(3)数据的删除

前言 本文为系列文章 B树的定义及数据的插入 数据的读取及遍历 数据的删除 阅读本文前,建议先复习前两篇文章,以便更好的理解本文。 从删除的数据所在的节点可分为两种情况: 从叶子节点删除数据 从非叶子节点删除数据 无论从叶子节点还是非叶子节点删除数据时都需要保证B树的特性:非根节点每个节点的 key

EPAI手绘建模APP介绍

​ 本软件是一个基于OpenCASCADE、android JNI开发的APP。底层用c++实现,UI层用android实现。底层和UI层之间通过JNI接口和json数据格式通信。 UI层包括资源管理器、编辑器、创建模型、工具栏四个部分。具体来说,包括模型列表、图层列表、相机列表、灯光列表、颜色库、

使用C#/.NET解析Wiki百科数据实现获取历史上的今天

创建一个webapi项目做测试使用。 创建新控制器,搭建一个基础框架,包括获取当天日期、wiki的请求地址等 创建一个Http请求帮助类以及方法,用于获取指定URL的信息 使用http请求访问指定url,先运行一下,看看返回的内容。内容如图右边所示,实际上是一个Json数据。我们主要解析 大事记 部

Canvas图形编辑器-数据结构与History(undo/redo)

Canvas图形编辑器-数据结构与History(undo/redo) 这是作为 社区老给我推Canvas,于是我也学习Canvas做了个简历编辑器 的后续内容,主要是介绍了对数据结构的设计以及History能力的实现。 在线编辑: https://windrunnermax.github.io/C

联邦学习:联邦异构知识图谱数据划分

在联邦场景下,C个知识图谱位于不同的客户端上。知识图谱拥的实体集合之间可能会存在重叠,而其关系集合和元组集合之间则不会重叠。我们联系一下现实场景看这是合理的,比如在不同客户端对应不同银行的情况下,由于不同银行都有着自己的业务流程,所以关系集合不重叠。本文我们来看具体在实验环节怎么去划分联邦异构知识图谱数据。