關注我的公衆號c137Lab獲取更多相關內容
Markdown 是一種輕量級標記語言,使用純文本格式編寫文檔。本公衆號的文章都是使用 Markdown 編寫的。Github、CSDN、知乎等平臺也同樣支持 Markdown 編輯,在Markdown 中還可以內嵌 Latex 公式,在網上經常能夠看到使用 Markdown 編寫的格式優美的文檔。
但是,由於是使用 純文本格式 ,在Markdown 中插入圖片可以說是非常令人頭疼的一件事了。
“markdown一時爽, 分享火葬場”
第一種方法,使用 圖牀 在 Markdown 中插入圖片。但是在線圖牀這個東西作者本人是極其討厭的,大部分圖牀難以管理、混亂不堪,而且將圖片保存到在線圖牀,有可能在過了一段時間後圖牀失效,你文章中的圖片就全部蒸發了,非常尷尬。
第二種方法,使用 本地圖片 地址傳入。但是這又讓文件管理變得複雜,而且當你的本地環境中沒有這張圖片時,圖片又會蒸發。而且保存在本地又給文件管理帶來了麻煩。
那麼解決方案是什麼呢!—— base64
base64 編碼的原理在此不多進行贅述,詳情參看維基百科 。Markdown中支持嵌入 base64 編碼的圖片,格式如下:
![圖片名稱](base64編碼)
或者
![圖片名稱][鏈接]
[鏈接]:base64編碼
接下來就自己動手使用 Python 寫一個小工具,來實現剪切板圖片到 base64 的轉換。爲了方便操作,主要實現以下功能:
- 讀取剪切板中的圖片(讀取截圖)
- 將圖片轉換爲 base64 編碼
- 將轉換完成的 base64 編碼導入到剪切板
- 生成一個應用程序(exe),實現一鍵操作
廢話少說,直接上代碼:
import base64
from PIL import Image
from PIL import ImageGrab
import pyperclip
from io import BytesIO
im = ImageGrab.grabclipboard()
def pil_base64(image):
img_buffer = BytesIO()
w, h = image.size
# image.thumbnail((128, 128))
image.save(img_buffer, format='JPEG', quality=95)
byte_data = img_buffer.getvalue()
base64_str = base64.b64encode(byte_data)
return base64_str
if isinstance(im, Image.Image):
# print(im.format, im.size, im.mode)
px = im.load()
msg = str(pil_base64(im))
msg = 'data:image/png;base64,' + msg[2:-2]
print(msg)
pyperclip.copy(msg)
else:
pass
之後使用 python installer 將其打包成一個 exe,再固定到開始菜單就可以使用啦。