├── .gitignore ├── Autohotkey.dll ├── 32bit ANSI │ └── AutoHotkey.dll ├── 32bit Unicode │ └── AutoHotkey.dll └── 64bit │ └── AutoHotkey.dll ├── ReadMe.md ├── upload_folded.ico ├── upload_qiniu.ahk └── upload_qiniu.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.ini -------------------------------------------------------------------------------- /Autohotkey.dll/32bit ANSI/AutoHotkey.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xzonepiece/markdown-img-upload-windows/b469407c12163a1990c0a8f234f94e64389204ea/Autohotkey.dll/32bit ANSI/AutoHotkey.dll -------------------------------------------------------------------------------- /Autohotkey.dll/32bit Unicode/AutoHotkey.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xzonepiece/markdown-img-upload-windows/b469407c12163a1990c0a8f234f94e64389204ea/Autohotkey.dll/32bit Unicode/AutoHotkey.dll -------------------------------------------------------------------------------- /Autohotkey.dll/64bit/AutoHotkey.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xzonepiece/markdown-img-upload-windows/b469407c12163a1990c0a8f234f94e64389204ea/Autohotkey.dll/64bit/AutoHotkey.dll -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | ## 简介 2 | 实现Windows上通过ctrl+alt+c -> alt+v往Markdown文档中插入图片 3 | 4 | ## 工具 5 | * [Python](https://www.python.org) 6 | 7 | > 要安装`qiniu`模块(必要)和`ConfigParser`模块 8 | 9 | * [AutoHotkey](http://ahkscript.org)+AutoHotkey.dll 10 | 11 | > AutoHotkey.dll是用来实现其他脚本语言对AutoHotkey的调用,请下载对应于你的AutoHotKey版本的dll文件,然后将它放到windows/System32文件夹中 12 | 13 | * 七牛云账号 14 | 15 | ## 配置 16 | 1. 注册七牛云账号,获得自己的AK、SK、空间名称以及域名地址 17 | 2. 新建配置文件`config.ini`,将它与`upload_qiniu.py`放在同一目录下 18 | ``` 19 | [qiniu] 20 | ak = # 填入你的AK 21 | sk = # 填入你的SK 22 | url = # 填入你的域名地址 23 | bucket = # 填入你的空间名称 24 | styleName = # 填入图片样式 25 | ``` 26 | 1. 将`markdown_picture.ahk`文件中*python*后面的地址替换成`upload_qiniu.py`文件的绝对地址 27 | 2. 双击`markdown_picture.ahk`文件,执行该脚本 28 | 29 | ## 使用 30 | 选中图片文件,按ctrl+alt+c,此时会跳出cmd窗口,当该窗口自动关闭之后,按alt+v就会在Markdown文档中插入图片 31 | -------------------------------------------------------------------------------- /upload_folded.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xzonepiece/markdown-img-upload-windows/b469407c12163a1990c0a8f234f94e64389204ea/upload_folded.ico -------------------------------------------------------------------------------- /upload_qiniu.ahk: -------------------------------------------------------------------------------- 1 | ;为该脚本添加特殊图标 2 | Menu, Tray, Icon, G:\Autohotkey\markdown_picture\upload_folded.ico, ,1 3 | ;将图片上传至七牛云,并获得图片地址 4 | ^!c:: 5 | send, ^c 6 | clipwait 7 | Run %comspec% /c "Python G:\Autohotkey\markdown_picture\upload_qiniu.py %Clipboard%" /p 8 | return 9 | -------------------------------------------------------------------------------- /upload_qiniu.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import sys 5 | reload(sys) 6 | sys.setdefaultencoding('utf-8') 7 | 8 | from qiniu import Auth, put_file 9 | import qiniu.config 10 | 11 | from ctypes import * 12 | import time 13 | 14 | import ConfigParser 15 | from datetime import datetime 16 | 17 | 18 | cf = ConfigParser.ConfigParser() 19 | cf.read('config.ini') 20 | access_key = cf.get('qiniu', 'ak') # AK 21 | secret_key = cf.get('qiniu', 'sk') # SK 22 | bucket_name = cf.get('qiniu', 'bucket') # 七牛空间名 23 | url = cf.get('qiniu', 'url') # url 24 | styleName = cf.get('qiniu', 'styleName') 25 | 26 | q = Auth(access_key, secret_key) 27 | 28 | mime_type = "image/jpeg" 29 | params = {'x:a': 'a'} 30 | 31 | prefix = datetime.now().strftime('%Y_%m_%d') 32 | 33 | def upload_qiniu(path, prefix): 34 | ''' upload file to qiniu ''' 35 | dirname, filename = os.path.split(path) 36 | key = '%s_%s' % (prefix, filename) # upload to qiniu's dir 37 | key = key.decode('gbk').encode('utf8') 38 | 39 | token = q.upload_token(bucket_name, key) 40 | progress_handler = lambda progress, total: progress 41 | ret, info = put_file(token, key, path, params, mime_type, progress_handler=progress_handler) 42 | return ret != None and ret['key'] == key 43 | 44 | if __name__ == '__main__': 45 | path = sys.argv[1] 46 | ret = upload_qiniu(path, prefix) 47 | if ret: 48 | # upload success 49 | name = os.path.split(path)[1] 50 | alt = name.split('.', 1) 51 | markdown_url = "![%s](%s/%s_%s_%s \"%s\")" % (alt[0], url, prefix, name, styleName, alt[0]) 52 | # make it to clipboard 53 | ahk = cdll.AutoHotkey #load AutoHotkey 54 | ahk.ahktextdll("") #start script in persistent mode (wait for action) 55 | while not ahk.ahkReady(): #Wait for AutoHotkey.dll to start 56 | time.sleep(0.01) 57 | ahk.ahkExec(u"clipboard = %s" % markdown_url.decode('gbk')) 58 | else: print "upload_failed" 59 | --------------------------------------------------------------------------------