关注我的公众号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,再固定到开始菜单就可以使用啦。