0%

markdown 图片base64 右键菜单

说明

  • 支持: 已有文件, 剪切板最后一个图片
  • 成功: 直接复制md lable格式的base64值到剪切板了, 没有弹窗
  • 失败: 弹窗报错原因
  • 代码地址: 传送门
  • 注意: 目前github的markdown解析器还不支持

安装和使用

安装

  • 依赖: Python3 已经安装
  • 执行根目录下的reg.bat 即可
  • 移动目录后需要重新安装

转化已有文件为base64格式到剪切板

file_from_img

转化剪切板最后一个图片为base64到剪切板

clip_from

markdown 中添加base64图片

1
2
3
4
![name][win_args]


[win_args]:data:image/jpeg;base64,xxxxxxxxxxx

原理

winreg:注册表操作右键菜单

1
2
3
4
5
6
7
8
9
10
11
12
13
# 打开名称父键
key = reg.OpenKey(reg_root_key_path, reg_key_path)
# 为key创建一个名称为menu_name的sub_key,并设置sub_key的值为menu_name加上快捷键,数据类型为REG_SZ字符串类型
reg.SetValue(key, menu_name, reg.REG_SZ, menu_name + f'(&{shortcut_key})')

# 打开刚刚创建的名为menu_name的sub_key
sub_key = reg.OpenKey(key, menu_name)
# 为sub_key添加名为'command'的子键,并设置其值为command 数据类型为REG_SZ字符串类型
reg.SetValue(sub_key, 'command', reg.REG_SZ, command)

# 关闭sub_key和key
reg.CloseKey(sub_key)
reg.CloseKey(key)
  • 指定的位置下创建key, 并指定可执行文件地址, 就可以添加右键菜单了
  • 常用地址说明
    • win_dir
  • 参数说明
    • win_args

pyperclip3 操作剪贴板

  • 从剪贴板获取图片
1
2
3
4
5
6
7
8
image = ImageGrab.grabclipboard()
if not isinstance(image, Image.Image):
# tkinter.messagebox.showinfo("picture2base64", "not a image in clipboard.")
logger.info("not a image in clipboard.")
raise Exception("not a image in clipboard.")
img_buffer = BytesIO()
image.save(img_buffer, format=picture_format, optimize=True, quality=40)
byte_data = img_buffer.getvalue()
  • 复制到剪贴板
1
2
msg = '[image]:data:image/' + picture_format + ';base64,' + base64_str
pyperclip3.copy(msg)