【干货】Markdown最强最快贴图方法

前言

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即可,具体方法往下翻

具体实现方法

  1. 注册七牛云账号,获得自己的AK、SK、空间名称以及域名地址

  2. 安装七牛云的Python SDK,参考Python SDK 使用指南
    pip install qiniu

  3. 编写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 time

        access_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"
    
  4. 编写AutoHotkey脚本文件markdown_picture.ahk

;将图片上传至七牛云,并获得图片地址
^!c::
send, ^c
clipwait
Run %comspec%  /c "Python *替换成upload_qiniu.py文件的地址* %Clipboard%" /p
return
  1. 启动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文档中,这是不是就是你想要的呢?

顺便提一下,七牛云还有一个超级强大的功能,在链接后面添加后缀可控制图片大小

推荐阅读更多精彩内容