首先介绍下markdown使用图片的3种方法
- 使用本地图片,缺点是要用到本地的绝对路径,不适合对文档做迁移,否则会有图片链接失效的情况

- 使用url链接插入图片,缺点是此方法依赖网络。比如,需要上传一些自定义的图片,就必须要先将图片上传至网络才能使用,同时也面临着图片链接失效,图片一样不能查看的情况
 # 代码效果见最下方
- 使用base64将图片转化为md文件可以识别的字符串,方便迁移并且不用上传网络,但缺点就是转化后的字符真的很长...
 # 字符串太长,后面省略,如下等同
另外,考虑到阅读体验,可以将图片转化的超长字符串放到文章最后,格式如下
![thisisimage][tthisisimagesisimage]
...
...
[tthisisimagesisimage]:data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...
以下代码用于将图片转换为markdown使用的长字符串,另外因为图片越大,转化成的字符串越长,所以增加了按比例缩小图片的功能
#!/bin/env python
import base64
from PIL import Image # pip install pillow
max_x = 450
image_infile = 'C:\\Users\\Goose\\Desktop\\cc.jpg'
image_outfile = 'C:\\Users\\Goose\\Desktop\\cc1.jpg' # 输出和输入格式的文件类型必须相同,比如都是jpg或png等
img = Image.open(image_infile)
x, y = img.size
print(x, y)
x_scale = x / max_x
print(x_scale)
new_x = int(x / x_scale)
new_y = int(y / x_scale)
print(new_x, new_y)
out = img.resize((new_x, new_y), Image.ANTIALIAS)
out.save(image_outfile)
with open(image_outfile, 'rb') as f:
ls_f = base64.b64encode(f.read())
print(ls_f)
以下代码用于将图片转化成的字符串,再转换为图片
#!/bin/env python
import base64
img_str = '/9j/4AAQSkZJRgABAQAAAQABAAD...'
img_outfile = 'C:\\Users\\Goose\\Desktop\\cc2.jpg'
img_data = base64.b64decode(img_str)
with open(img_outfile, 'wb') as f:
f.write(img_data)
网络链接图片举例如下

转化后的字符串并缩小处理的图片如下
