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="+")"#將圖片格式轉為base64格式
a=re.sub("!\[[^]]*\]\([^)]*\)",temp,a)#替換base64格式圖片到源字符串
transformed.write(a)#寫入一行
transformed.close()