Markdown本地图片转base64嵌入

Markdown本地图片转base64嵌入

博客园在发布markdown文章时,如果你的文章中含有大量本地图片,这个图片拖拽(本地图片转网络图片)就会很麻烦

我的做法是将markdown中的本地图片转为base64嵌入,然后直接复制粘贴到博客园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"(两侧有引号,这也就是你选中md文件,然后shift+右键,复制路径得到的结果)
target=target.replace("\\","/")
target=target[1:-1]
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.search("!\[[^]]*\].*",a)):#匹配到图片格式
            address=re.search("(?<=\()[^\)]*",a).group().replace("\\","/")#提取图片地址并且将反斜杠转换为斜杠
            if not(re.match("data",address) or re.match("http",address)):#确定是本地图片
                temp="![avatar](data:image/png;base64,"+phtot_base64(address)+")"#将图片格式转为base64格式
                a=re.sub("!\[[^]]*\]\([^)]*\)",temp,a)#替换base64格式图片到源字符串
        transformed.write(a)#写入一行
    transformed.close()

猜你喜欢

转载自www.cnblogs.com/redo19990701/p/11441958.html