美文网首页SublimeMarkdown技巧集:Tips and Tricks工具
【干货】Markdown最强最快贴图方法

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

作者: xzonepiece | 来源:发表于2016-02-24 21:21 被阅读6507次

    前言

    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文档中,这是不是就是你想要的呢?

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

    相关文章

      网友评论

      • 张照博:不是直接用QQ的截图,然后复制就可以了吗?哪用费这么多功夫啊。
      • 3cc28f63021d:哪要这么麻烦,直接把图片复制到issue里面,markdown的图片代码就会出来了,然后再把那段代码复制到readme里面,不就OK了?
      • 小徒徒:赞!文中教程描述的是window系统。想请问,MAC电脑可以有什么快速贴图方法?
        xzonepiece: @小徒徒 有啊,看前言里提到的那篇文章
      • 50f1a1fc8cef:感谢楼主分享,只是 path = sys.argv[1] IndexError: list index out of range.一直报索引越界异常怎么解决呢?
      • a558964f277c:我试了下,要先 ctrl+c,然后 ctrl+alt+c 才可以上传到七牛
        xzonepiece:@yes_V_can 这些都是可以改的
      • 1a843f6db9d9:可是并不可以耶,黑窗子过后,ctr+v没有东西出来,去七牛看也没内容
        fraliowner:我的也出了这个问题,复制到d盘,和先加一个ctrl的方法都试过了,还是不行,而且,七牛上也没有
        xzonepiece:@vincent2d 是不是dll版本的问题
        1a843f6db9d9:@vincent2d 将图片复制到D盘下就可以上传到七牛。但仍报错在ahk = cdll.AutoHotkey这行上,无法取得路径名到剪切板
      • 发愤的草莓:我一般直接从电脑上直接拖动图片到简书里喔
        xzonepiece: @发愤的草莓 如果只在简书上写的话,这个方法的确没什么必要
      • 27a869f3c8b9:实用,赞
      • Ramy大虾:棒
        xzonepiece: @Ramy大虾 谢谢

      本文标题:【干货】Markdown最强最快贴图方法

      本文链接:https://www.haomeiwen.com/subject/afeikttx.html