markdown本地图片转base64嵌入
自己偶尔也写博客,但插入图片实在是一大难事,本身用的是typora离线来写markdown,图片也大多是本地的,每次将markdown复制到博客园编辑器,图片都不能显示(因为这里要求是网络地址而不是本地地址),来回拖动图片很打击我写作的积极性,所以我尝试写代码将markdown中的本地图片转为base64存储在markdown文件中,这样只要复制markdown源代码到博客园在线编辑器就可以了
花了半个小时写的(熟悉了一下正则表达式和文件操作),不足之处轻喷,欢迎提出建议
import base64 import re def phtot_base64(address):#将地址为address的图片转为base64字符串 with open(address,"rb") as photo: pb=base64.b64encode(photo.read()) return str(pb)[2:-1] target=input("请输入目标markdown文件地址");#例如:D:\Markdown\Note\Machine learning\误差与噪音.md(两侧一定不要加引号) target=target.replace("\\","/") with open(target,"r",encoding="utf-8") as md:#打开目标文件 transformed=open(target[0:-3]+"_transformed.md","w",encoding="utf-8")#在目标文件同一文件夹地址下产生转换后文件 for a in md: if(re.match("!\[[^]]*\].*",a)):#匹配到图片格式 address=re.search("(?<=\()[^\)]*",a).group().replace("\\","/")#提取图片地址并且将反斜杠转换为斜杠 a="![avatar](data:image/png;base64,"+phtot_base64(address)+")\n"#将图片格式转为base64并加上回车 transformed.write(a)#写入一行 transformed.close()