Markdown插入图片的便捷方式

1. 前言

最近一直在使用 Markdown 写文档,但是其中贴图真是太麻烦了,于是就想着能不能有什么好的方法来解决,Google,发现了网上已经有一些前辈写好的教程了,我主要参考了这两篇博客的内容:

但是在直接使用时并不是那么一帆风顺,遇到了各种不成功的情況,然后我就自己调试,摸索了一下,终于成功了。现在将大概的过程记录一下,希望能提供一下参考价值,不至于他人遇到同样的坑。

2. 前期准备工具

1. python

推荐使用 python3.x

本人的python水平为初级入门,在爬坑的过程中发现在Windows环境下 python2.x 对图片路径中含有中文的情况会报错,还需要特别处理一下编码问题。我Google了半天,没有搞定(水平太次,请勿嘲笑)。然后使用 python3.x 版本发现可以很好的解决中文 路径错误的问题,所以就果断使用了python3.x版本。

我本地的python版本为: python2.7.10python 3.5.3

2. AutoHotKey + AutoHotKey.dll

AutoHotkey.dll是用来实现其他脚本语言对AutoHotkey的调用,你需要下载对应于AutoHotKey版本的dll文件,然后将它放到windows/System32文件夹中,AutoHotkey.dll的下载地址为:https://github.com/xzonepiece/markdown-img-upload-windows/tree/master/Autohotkey.dll。

注意:这里AutoHotKey要选择和自己操作系统相匹配的版本。

3. 七牛云账号

实名认证后该平台提供注册用户免费的10G空间;如果没有认证,则有1G的免费空间可以使用。

3. 具体实现

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

    说明:

    1. AKSK 在七牛云的 个人中心 –> 密钥管理 中可以看到
    2. 资源主页 –> 七牛官方资源 –> 对象存储 –> 立即添加 就可以添加存储空间
    3. 完成空间添加后,空间名称 就是你填写的空间的名称
    4. 域名地址在你创建空间的 内容管理 可以看到外链默认域名
  2. 安装七牛云的python SDK,参考七牛云的 Python SDK 使用指南

    可以通过 pip 或者 easy_install 直接安装,也可以 使用源码安装。

    这里我使用的是源码安装,这样可以安装到不同的python版本,另一个原因是我本地没有pip(又要被嘲笑了)。

  3. 编写 Python 脚本文件 upload_qiniu.py

    这里修改上面两篇参考文献中的内容,略有不同。。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #! /usr/bin/python
    #-*- coding: utf-8 -*-
    from qiniu import Auth, put_file, etag, urlsafe_base64_encode
    import qiniu.config
    from qiniu import BucketManager
    import sys,time
    import os
    import time
    # you need get yours msg here
    access_key = "xxx" # 填入你的 AK
    secret_key = "xxx" # 填入你的 SK
    bucket_name = "xxx" # 填入你的七牛空间名称
    bucket_url = "xxx" # 填入你的域名地址
    img_suffix = ["jpg", "jpeg", "png", "bmp", "gif"] # 支持多种图片格式
    def upload_img(bucket_name,file_name,file_path):
    # generate token
    token = q.upload_token(bucket_name, file_name, 3600)
    info = put_file(token, file_name, file_path)
    # delete local imgFile
    # os.remove(file_path)
    return
    def get_img_url(bucket_url,file_name):
    # ?imageMogr2/thumbnail/!65p
    # file_names = file_name + '?imageMogr2/thumbnail/!75p'
    file_names = file_name + '?'+ time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
    img_url = 'http://%s/%s' % (bucket_url,file_names)
    # generate md_url
    md_url = "![%s](%s)\n" % (file_name, img_url)
    return md_url
    # save to clipboard
    def addToClipBoard(bucket_url,file_name):
    text = get_img_url(bucket_url,file_name)
    command = 'echo ' + text.strip() + '| clip'
    os.system(command)
    if __name__ == '__main__':
    q = Auth(access_key, secret_key)
    bucket = BucketManager(q)
    img = sys.argv[1]
    # name for img with local time
    up_filename = os.path.split(img)[1]
    upload_img(bucket_name,up_filename,img)
    addToClipBoard(bucket_url,up_filename)

    其实这一步完成之后,就可用通过命令运行 py 文件实现图片上传并自动获取链接的功能,并且链接地址已经复制到了系统剪贴板,可以通过 ctrl + v 的方式拿到图片的链接了。

  4. 编写 AutoHotKey脚本文件 markdown_picture.ahk

    1
    2
    3
    4
    5
    ;将图片上传至七牛云,并获得图片地址
    ^!c::
    send, ^c
    clipwait
    Run %comspec% /k "python *替换成upload_qiniu.py文件的地址* %Clipboard%"

    为了防止疑惑,这里给出一个 Windows 环境下示例:

    1
    2
    3
    4
    5
    ;将图片上传至七牛云,并获得图片地址
    ^!c::
    send, ^c
    clipwait
    Run %comspec% /c "python D:\program\qiniu-python-sdk\upload_qiniu.py %Clipboard%"

    这里也稍微修改了参考文献中的内容,因为在我本地运行时原来的脚本执行不成功。

    其中,第五行的“/k” 表示命令执行完成之后,cmd窗口不消失,这样可以方便调试,如果出错了可以看到错误信息;如果希望窗口自动关闭,可以将这个参数设置为“/c”

  5. 启动markdown_picture.ahk 后,我们就可以使用 ctrl + alt + c –> ctrl + v 来插入图片了。

    选中一个图片文件,按下ctrl + alt + c,这时候会跳出cmd窗口,如果没有错误,你就可以使用ctr + v来插入图片的七牛云的网络链接,就这么简单!!!


[参考文献]