前言
Markdown作为现在比较流行的写作工具(准确地说是标记语言),已被越来越多的人使用,很多主流的博客网站或写作平台都支持这种写作工具(比如,我最喜欢的简书),但是Markdown中的贴图方法有些麻烦,因为Markdown是纯文本工具,它不能像Word那样通过插入的方式内嵌进去,尽管有些Markdwon软件提供类似地插入功能,但是一旦本地图片移动到别的位置,图片也无法显示,而且不同地Markdown软件对本地图片的语法也有所区别,所以最可靠的办法还是上传到图床上,通过图床提供的图片链接来插入图片。但是,通过这种方式,你最少也需要三步:上传图片 -> 获得链接 -> 粘贴链接,再加上你还要打开浏览器,在各种软件之间切换,这种方式的效率极低,那有没有一种类似ctrl+c
-> ctrl+v
的方式呢?当然有,下面我就来告诉你。
如果你使用的是Mac的话,请参考这篇文章上提供的方法-简化markdown写作中的贴图流程;如果你使用的是Windows的话,请使用我下面介绍的方法。
前期工具准备
- Python(世界上最强大的脚本语言)
说到这里我不得不承认,要使用这种方法的话,你可能要会一点Python,至少要安装了Python
- AutoHotkey(Windows上最方便的脚本语言)+AutoHotkey.dll
AutoHotkey.dll是用来实现其他脚本语言对AutoHotkey的调用,你需要下载对应于AutoHotKey版本的dll文件,然后将它放到windows/System32文件夹中
[AutoHotkey.dll]下载地址(https://github.com/xzonepiece/markdown-img-upload-windows/tree/master/Autohotkey.dll)
- 七牛云账号(该平台提供注册用户免费的10G空间)
但是,如果你只使用本地图片的话,我告诉你一种插入本地图片全宇宙最快的方法,只需要安装AutoHotkey即可,具体方法往下翻
具体实现方法
注册七牛云账号,获得自己的AK、SK、空间名称以及域名地址
安装七牛云的Python SDK,参考Python SDK 使用指南
pip install qiniu-
编写Python脚本文件
upload_qiniu.py
#-- coding: utf-8 --
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from qiniu import Auth, put_file
import qiniu.config
from ctypes import *
import timeaccess_key = "xxx" # 填入你的AK secret_key = "xxx" # 填入你的SK bucket_name = "xxx" # 填入你的七牛空间名称 url = "xxx" # 填入你的域名地址 q = Auth(access_key, secret_key) mime_type = "image/jpeg" params = {'x:a': 'a'} def upload_qiniu(path): dirname, filename = os.path.split(path) key = '%s' % filename key = key.decode('gbk').encode('utf8') token = q.upload_token(bucket_name, key) progress_handler = lambda progress, total: progress ret, info = put_file(token, key, path, params, mime_type, progress_handler=progress_handler) return ret != None and ret['key'] == key if __name__ == '__main__': path = sys.argv[1] ret = upload_qiniu(path) if ret: name = os.path.split(path)[1] markdown_url = "![](%s/%s)" % (url, name) # make it to clipboard ahk = cdll.AutoHotkey # load AutoHotkey ahk.ahktextdll("") # start script in persistent mode (wait for action) while not ahk.ahkReady(): # Wait for AutoHotkey.dll to start time.sleep(0.01) ahk.ahkExec(u"clipboard = %s" % markdown_url.decode('gbk')) else: print "upload_failed"
编写AutoHotkey脚本文件
markdown_picture.ahk
;将图片上传至七牛云,并获得图片地址
^!c::
send, ^c
clipwait
Run %comspec% /c "Python *替换成upload_qiniu.py文件的地址* %Clipboard%" /p
return
- 启动
markdown_picture.ahk
文件之后,我们就可以使用ctrl+alt+c
->ctr+v
来插入图片
- 选中一个图片文件,按下
ctrl+alt+c
,这时候会跳出cmd窗口,你不需要理会它,等该窗口自动关闭之后,你就可以使用ctr+v
获得一条Markdown插入图片的语句,就这么简单!!!- 你还可以给AutoHotkey脚本添加一个好看的图标哟,详见我的Github
本地图片最快贴图方法
如果你不想使用这么麻烦的方法、只使用本地图片的话,请务必要使用AutoHotkey,再结合我下面提供的AutoHotkey脚本,可以最快地插入本地图片(上面的方法因为要上传图片,所以获得图片链接会有些慢,取决于你的图片大小和网络状况,当然,你也可以将上传图片和获得链接地址分开执行,这样速度也极快,具体方法自己可以去试试看)
在安装好AutoHotkey之后,新建一个空白的txt文档,然后粘贴下面的语句:
;将本地图片插入Markdown
^!c::
send, ^c
clipwait
clipboard = ![](%clipboard%)
return
将文档的后缀改成ahk,最后双击该文件执行该AutoHotkey脚本。这时候你就可以ctrl+alt+c
-> alt+v
来插入本地图片。
该方法获得的图片语法对sublime text3中的Markdown preview插件是支持的,但对于其他的Markdown软件可能是无效的,请自己做适当的修改。
结语
现在,你点击一张本地图片文件,然后按ctrl+alt+c
,再ctr+v
粘贴到Markdown文档中,这是不是就是你想要的呢?
顺便提一下,七牛云还有一个超级强大的功能,在链接后面添加后缀可控制图片大小