Markdown内嵌图片的解决方法

Markdown内嵌图片的解决方法

文章目录

    • Markdown内嵌图片的解决方法
  • 问题与解决方案
  • 一、实现功能
  • 二、脚本制作
    • 1.利用文件选择框选择文件或者从剪贴板读取图像
    • 2.将图片转为Base64编码
    • 3.转换结束的Base64编码传递至剪贴板
    • 4. 制作为exe文件并绑定快捷键
  • 三、脚本安装和使用
    • 1. 制作python文件
    • 2.制作bat或者vbs文件
    • 3.制作为exe文件
    • 4.使用步骤
  • 四、总结与参考


问题与解决方案

使用Markdown记录笔记,分享至不同设备时里面的图片无法显示,原因是markdown不支持内嵌图片,而是采用插入路径的方式访问图片。为了分享至不同设备时能正常显示图片一般采用云端存储图片的方式,但是有没有方法能像word一样存储图片呢?答案是需要把路径更改为base64编码方式,就能实现在markdown文件中插入图片。

一、实现功能

  • 截图后粘贴进markdown文档路径更给为base64格式保存
  • 不使用截图时可以选择本地图片,自动更给为base64格式保存进markdown文档
    Markdown内嵌图片的解决方法_第1张图片

二、脚本制作

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

  • 从文本选择框选择文件:
import win32ui
 dlg = win32ui.CreateFileDialog(1)  # 1表示打开文件对话框
 dlg.SetOFNInitialDir('C:\\Users\\Desktop')  # 设置打开文件对话框中的初始显示目录
 dlg.DoModal()
 filename = dlg.GetPathName()  # 获取选择的文件路径和名称
  • 从剪贴板获取图片文件
from PIL import ImageGrab
im = ImageGrab.grabclipboard()#获取剪贴板文件
if isinstance(im, Image.Image):
 img = im
else:
 pass

2.将图片转为Base64编码

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>

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

  • 使用cmd窗口运行上述python代码,clip命令用于传递至剪贴板:
@echo off
python D:\\123.py | clip
  • 或者使用VBscript运行脚本
>Set ws = createObject("WScript.shell")
​
ws.run "cmd /c python D:\\PythonCode\\base64pic.py | clip",vbhide

4. 制作为exe文件并绑定快捷键

  • 将exe文件创建快捷方式后放在任务栏,可以通过“win+数字”的快捷键使用。
    Markdown内嵌图片的解决方法_第2张图片

三、脚本安装和使用

1. 制作python文件

  • 复制一下python代码,注意需要更改:"F:\\PythonCode\\base64pic\\1.jpg"为保存图片的本地路径。更改'C:\Users\chens\Desktop'为初始文件对话框。保存为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(r'C:\Users\chens\Desktop')  # 设置打开文件对话框中的初始显示目录
 dlg.DoModal()
 filename = dlg.GetPathName()  # 获取选择的文件名称
 img = Image.open(filename)

img.thumbnail((778,439),Image.ANTIALIAS)
img=img.convert('RGB')
img.save("F:\\PythonCode\\base64pic\\1.jpg", quality=70)
with open("F:\\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("F:\\PythonCode\\base64pic\\1.jpg")

2.制作bat或者vbs文件

  • 制作bat文件:复制一下代码用bat格式保存。(路径为上面pyhon文件所在地址)
@echo off
python D:\\123.py | clip
  • 或者制作vbs文件
>Set ws = createObject("WScript.shell")
​
ws.run "cmd /c python D:\\PythonCode\\base64pic.py | clip",vbhide

制作完bat或者vbs文件,打开他们就可以实现上述功能啦!但如果制作成exe文件则会更加方便些(下一步)。

3.制作为exe文件

  • 这里以vbs文件为例:使用工具vbs to exe可以转换为exe(链接:https://pan.baidu.com/s/1Mu-qkmVzVx32FtBBD0WAFg 提取码:wdsa )
  • 创建快捷方式,固定至任务栏,可以更改快捷方式的图标。
    Markdown内嵌图片的解决方法_第3张图片
    Markdown内嵌图片的解决方法_第4张图片
    注意:生成的exe文件可能被杀毒软件误杀,将其加入杀毒软件白名单即可。另外,也可在生成exe时更换图标。

4.使用步骤

  • 截图后启动exe文件,复制文本则为base编码的图片
  • 或者直接启动exe文件,在文件选择框中选取相应图片
    Markdown内嵌图片的解决方法_第5张图片

四、总结与参考

由于base64编码长度很长,可以参考一下格式保存:

![image][tmp]
your document here ...

[tmp]:data:image/png;base64, ......

[1]Markdown插入图片的完美解决方法
[2]VBS转化为exe可执行文件
[3]将图片内嵌入Markdown文档中

你可能感兴趣的:(软件)