Markdown插入图片的完美解决方法

"markdown一时爽, 分享火葬场", markdown的简便性和美观性一直受到诸多码农偏爱. 但是markdown文件不支持内嵌图片, 所有的图片都以外部链接的方式插入. 所以分享Markdown文件的时候就不得不和图片一起发送, 同时还得注意设置图片路径, 让强迫症患者难以接受.

结合base64编码方式, 我找到了一种极为方便的在markdown文件中插入图片的方法:

示例图一: 在截屏快捷键截屏后直接复制base64编码到Markdown编辑器
1.gif
示例图二: 在Markdown编辑器打开文件选择框, 选择图片并粘贴base64编码文件至Markdown编辑器.
2.gif

要实现以上两种功能需要完成以下几个步骤:

  • 1.利用文件选择框选择文件或者从剪贴板读取图像

  • 2.将图片转为Base64编码

  • 3.将转换结束的Base64编码传递至剪贴板

  • 4.将以上脚本绑定至Windows全局快捷键

首先, 我们考虑实现第一个功能: 从文件选择框选择文件或获取剪贴板图像

从文件选择框选择文件非常简单, 可以用如下Python代码实现:

import win32ui
 dlg = win32ui.CreateFileDialog(1)  # 1表示打开文件对话框
 dlg.SetOFNInitialDir('C:\\Users\\Desktop')  # 设置打开文件对话框中的初始显示目录
 dlg.DoModal()
 filename = dlg.GetPathName()  # 获取选择的文件路径和名称</pre>

第二个功能是获取剪贴板的图像文件, 同样用如下代码实现:

from PIL import ImageGrab
im = ImageGrab.grabclipboard()#获取剪贴板文件
if isinstance(im, Image.Image):
 img = im
else:
 pass

其实是实现图片转Base64编码文本, 这一步非常简单, python代码如下:

with open("D:\\PythonCode\\base64pic\\1.jpg", 'rb') as f:
 base64_data = base64.b64encode(f.read())
 s = base64_data.decode()
 print('(data:image/jpeg;base64,%s) \n'%s)</pre>

再次, 将Base64编码传递至剪贴板. 这一步需要用CMD命令实现, 使用CMD的 clip 命令即可, 代码如下:

@echo off
python D:\\123.py | clip

以上代码即可实现运行python脚本, 同时将python脚本的输出传递至剪贴板. 但是使用以上代码, 就是我们使用了@echo off 关闭了命令行的代码输出, 使用命令的时候依旧会弹出难看的CMD命令框, 着实不够优雅.

还好, 我们永远有 Plan B. 我们还可以使用VBscript运行脚本, 同时隐藏难看的CMD命令框, 代码如下:

>Set ws = createObject("WScript.shell")
​
ws.run "cmd /c python D:\\PythonCode\\base64pic.py | clip",vbhide

最后, 我们考虑最后一个功能的实现, 绑定以上脚本至Windows全局快捷键.

实现这一功能有两种方式:

方法一是用Windows快捷方式自带的实现, 示意图如下:

image.jpeg

但是缺点在于反应十分慢, 慢到难以接受.

第二种方法则是将脚本的快捷方式放在任务栏, 使用 Windows + 数字 的方式快捷调用, 示意图如下:

image.jpeg

一个小tips是, 可以用"更换图标" 的功能给快捷方式换一个好看的图标, 示意图如下:

image.jpeg

结果就是这样的:

image.jpeg

附:

1.Python完整代码
import win32ui,os,base64
from PIL import Image,ImageGrab
​
im = ImageGrab.grabclipboard()
if isinstance(im, Image.Image):
 img = im
else:
 dlg = win32ui.CreateFileDialog(1)  # 1表示打开文件对话框
 dlg.SetOFNInitialDir('C:\\Pictures')  # 设置打开文件对话框中的初始显示目录
 dlg.DoModal()
 filename = dlg.GetPathName()  # 获取选择的文件名称
 img = Image.open(filename)
​
img.thumbnail((778,439),Image.ANTIALIAS)
img=img.convert('RGB')
img.save("D:\\PythonCode\\base64pic\\1.jpg", quality=70)
​
with open("D:\\PythonCode\\base64pic\\1.jpg", 'rb') as f:
 base64_data = base64.b64encode(f.read())
 s = base64_data.decode()
 print('![](data:image/jpeg;base64,%s)'%s)

os.remove("D:\\PythonCode\\base64pic\\1.jpg")
2.VBS脚本完整代码
Set ws = createObject("WScript.shell")
​
ws.run "cmd /c python D:\\PythonCode\\base64pic\\base64pic.py | clip",vbhide
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,065评论 1 32
  • 仓央嘉措说世间除了生死,哪一件不是闲事!昨天,单大姐从北京和领导一起培训回来,在饭桌上也不知道说些什么聊到父母尽孝...
    行走的雪绒花阅读 151评论 0 0
  • 嗨!大家好,我是和大家一起帅三代,美三代的Le tigre。今天是更新的第28篇,欢迎指教。 记忆中丢过很多东...
    虎痞子阅读 280评论 1 0
  • 书分为两种:1、块状:补足大块的知识;2、线状:把块状串接起来,帮我们还原为真实的对世界的感知。 穆彰阿,道光皇帝...
    大庆思考笔记阅读 1,422评论 1 2
  • 人与人之间的距离很遥远吗?我不这么认为,昨天和隔壁寝室的小伙伴们聊了好久好久,从聊自己家里的事情到初中高中发生过哪...
    yourladyjojo阅读 137评论 0 0