Markdown引用图片,且不使用网上链接的解决方法

首先介绍下markdown使用图片的3种方法

  • 使用本地图片,缺点是要用到本地的绝对路径,不适合对文档做迁移,否则会有图片链接失效的情况
![thisisimage](C:\\Users\\Goose\\Desktop\\cc1.jpg)
  • 使用url链接插入图片,缺点是此方法依赖网络。比如,需要上传一些自定义的图片,就必须要先将图片上传至网络才能使用,同时也面临着图片链接失效,图片一样不能查看的情况
![thisisimage](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1560707333204&di=2e7438b797daaddc837aa5659628b5c2&imgtype=0&src=http%3A%2F%2Fimage.namedq.com%2Fuploads%2F20190105%2F23%2F1546702651-RprCqAefWl.jpg '你瞅啥') # 代码效果见最下方
  • 使用base64将图片转化为md文件可以识别的字符串,方便迁移并且不用上传网络,但缺点就是转化后的字符真的很长...
![thisisimage](data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...) # 字符串太长,后面省略,如下等同

另外,考虑到阅读体验,可以将图片转化的超长字符串放到文章最后,格式如下

![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)

网络链接图片举例如下

thisisimage

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

thisisimage

猜你喜欢

转载自www.cnblogs.com/youbiyoufang/p/11032652.html
今日推荐