安装
首先安装一些需要用的东西
- pywin32
- PIL
- spy++
- WinHotKey
安装pywin32
这个是用来操作windows
这个要根据自己的windows版本和python版本来安装, 比如我的windows 64, python 2.7
我就安装这个
pywin32-220.win-amd64-py2.7.exe
安装PIL
这个是用来操作剪切板
注意的就是: 如果是64的系统, 官网只有32的, 现在有不是官网的64版本, 我提供一个下载地址:
PIL-fork-1.1.7.win-amd64-py2.7.exe
spy++
这个是用来获取所有的windows窗口的信息, 比如说窗口的类名
这个可以下载绿色的版本, 用完后可以直接删除
WinHotKey
这个软件可以定义快捷键, 很实用
查询sublime的类名
打开spy++, 从所有的窗口中找到sublime窗口(前提是打开了sublime)
我的是这样的, 然后右键-属性-类-类名
类名就是PX_WINDOW_CLASS
获取到sublime窗口
根据上面的到的类名, 获取窗口句柄, 然后获取到窗口信息1
2pwin = win32gui.FindWindow('PX_WINDOW_CLASS', None)
sublime_win_name = win32gui.GetWindowText(pwin)
得到的信息是这样的:1
F:\hexo\source\_posts\hexo\开发一个在sublime下的markdown图片插件.md ? (_posts) - Sublime Text (UNREGISTERED)
使用正则获取到md文件的父路径和md文件名
1 | result = re.search('(^.+)\\\(.+\\.md).*', sublime_win_name) |
得到的结果是这样的:1
2F:\hexo\source\_posts\hexo\
开发一个在sublime下的markdown图片插件.md
从剪切板获取到并存储
- 使用PIL库很方便的把剪切板的图片转换成图片文件
- 生成的文件名使用当前的时间戳, 避免文件重复
- 图片存储路径为当前md文件同级目录,如我的:
1
2
3
4
5
6im = ImageGrab.grabclipboard()
md_image_path = md_path + r'\\' + md_name
if not os.path.exists(md_image_path):
os.makedirs(md_image_path)
image_file = '%d.png' % int(time())
im.save(md_image_path + r'\\' + image_file, 'PNG')
将图片的相对路径复制到剪切板
图片存储之后, 自动生成一个类似![]()
的代码, 然后放到剪切板, 我们只需要CTR+V
复制就可以用了1
setText('![](%s)' % (md_name + r'/' + image_file))
制作运行脚本
我们要执行这个py文件, 会弹出cmd窗口, 很难看, 怎么办?
我们做成一个vbs文件, 就可以不出现CMD窗口了, 我的是run.vbs, 内容如下:1
2Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c C:\Python27\pythonw.exe run.py",vbhide
指定快捷键
使用WinHotkey,给你的vbs文件指定一个快捷键, 以后一个快捷键就搞定了
完整代码
我放在github上
完整代码