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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM