首页 > 编程语言 >C#实现图片转Base64字符串.并支持markdown文件打开展示

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

时间:2024-05-13 11:07:57浏览次数:21  
标签:case markdown return C# image Base64 base64 字符串

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

 

 

 

标签:case,markdown,return,C#,image,Base64,base64,字符串
From: https://www.cnblogs.com/weskynet/p/18188836

相关文章

  • Leedcode-最大连续 1 的个数
    自己写的:fromtypingimportListclassSolution:deffindMaxConsecutiveOnes(self,nums:List[int])->int:#初始化最大连续1的计数器和临时连续1的计数器count=0temp=0#获取列表长度n=len(nums)#初......
  • 【问题解决】java.lang.NoSuchMethodError错误
    问题现象近期本人负责的一个SpringBoot模块出现了java.lang.NoSuchMethodError报错,问题情况如下:A类提供了setJumpType(Stringtype),B类调用A类的setJumpType(Stringtype)报错java.lang.NoSuchMethodError:com.xxx.A.setJumpType(Ljava/lang/String;)V在之前的发版的程序中,B......
  • EXP练手:CVE-2022-22963从编写到调试排错
    写什么?之前在使用Spring相关工具时候发现其中漏洞利用模块CVE-2022-22963需要手动利用(2023年的笔记,现在不确认工具是否更新了)GitHub-AabyssZG/SpringBoot-Scan:针对SpringBoot的开源渗透框架,以及Spring相关高危漏洞利用工具于是尝试编写这个exp,对编程不熟悉的可以看看我的Go......
  • OSCP靶机训练Kioptrix Level 1
    Vulnhub——KioptrixLevel1前期准备:​ 1、kali攻击机:10.0.0.4 NAT模式​ 2、靶机:10.0.0.10 NAT模式​ 注意:​ 该靶机默认为桥接模式,且在虚拟机中修改为NAT模式,在靶机启动之后又自动更改为了桥接模式​ 需要在靶机的配置文件中进行修改​ 将所有Bridge修改为nat即可......
  • vcenter创建数据中心加入ESXI主机
    vcenter创建数据中心加入ESXI主机 右键选择vcenter主机,点新建数据中心 2、点确定  3、对Datacenter右键,然后选择添加主机 4、添加主机IP地址 5、添加用户密码,然后下一页 6、点是 7、会显示摘要,按下一页 8、分配许可证 9、按是 10、按下一......
  • C#-电测设备
    一、电测名词AC:交流;DC;直流;ACW:交流电压耐压测试;DCW:直流电压耐压测试;IR:绝缘电阻测试;GB:;GND:;二、电测仪器参数SE7430 SE7440 SE7441*SE7452SE7451交流耐压(ACW) 5kVac/40mA 5kVac/100mA直流耐压(DCW) 6kVdc/10mA绝缘阻抗 (IR) 6kVdc/50G......
  • 在PLC的扫描特性下,FOR循环里面套IF或者定时器会发生什么?
    1.为什么会提出这个题目在PLC指令的执行过程中,FOR循环会在每个扫描周期执行完一个循环,然后程序才会接着往下扫描在PLC指令的执行过程中,IF判断会在每次扫描中判断一次条件,满足则进入执行体,不满足则跳出IF把IF放在FOR循环里面,会导致循环体执行时间过长,或者其他问题吗?(答案是不会......
  • 了解GaussDB SQL中CASE表达式
    本文分享自华为云社区《GaussDBSQL基本语法示例-CASE表达式》,作者:Gauss松鼠会小助手2。一、前言SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。二、CA......
  • MySQL中的FOUND_ROWS()与ROW_COUNT()函数
    参考:https://www.cnblogs.com/JennyYu/p/16888090.htmlFOUND_ROWS():found_rows()用于查询同一连接下,上一条执行select查询返回的行数,包括show语句返回的行数。中间可以插入执行dml语句,返回依然是上一条select语句返回的行数。使用sql_calc_found_rows与found_rows()组合,可以查......
  • 推荐一款Windows兼容的开源操作系统-ReactOS
    ReactOS介绍ReactOS™isanOpenSourceefforttodevelopaqualityoperatingsystemthatiscompatiblewithapplicationsanddriverswrittenfortheMicrosoft®Windows™NTfamilyofoperatingsystems(NT4,2000,XP,2003,Vista,7).TheReactOSproject,al......