如用简悦等方法,复制下来的离线markdown总是有巨大的base64图片,非常难打开,难编辑,用此python脚本即可将离线markdown中所有图片转为本地图片
# markdown的base64图片存入本地.py
import re
import os
import base64
def extract_images(md_file):
# 打开Markdown文件
with open(md_file, 'r') as file:
data = file.read()
# 使用正则表达式查找所有的图片数据
img_pattern = re.compile(r'(\[(img-\d+)\]:(data:image)\/(jpeg|gif|png);base64,([^\n]+))')
images = img_pattern.findall(data)
# 如果images文件夹不存在,创建它
if not os.path.exists('images'):
os.makedirs('images')
for match in images:
full_match, img_name, img_data, img_type, img_base64 = match
# 处理不完整的base64编码
missing_padding = len(img_base64) % 4
if missing_padding:
img_base64 += '='* (4 - missing_padding)
# 转换并保存图片
with open(f'images/{img_name}.{img_type}', 'wb') as img_file:
img_file.write(base64.b64decode(img_base64))
# 在原始数据中删除图片标记
data = data.replace(full_match, '')
# 将markdown文件中的图片引用修改为新的路径
data = data.replace(f'![][{img_name}]', f'![](images/{img_name}.{img_type})')
# 保存修改后的Markdown数据
with open(md_file, 'w') as file:
file.write(data)
if __name__ == "__main__":
# 使用你的markdown文件名替换 'your_file.md'
extract_images('your_file.md')