使用Markdown记录笔记,分享至不同设备时里面的图片无法显示,原因是markdown不支持内嵌图片,而是采用插入路径的方式访问图片。为了分享至不同设备时能正常显示图片一般采用云端存储图片的方式,但是有没有方法能像word一样存储图片呢?答案是需要把路径更改为base64编码方式,就能实现在markdown文件中插入图片。
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
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>
@echo off
python D:\\123.py | clip
>Set ws = createObject("WScript.shell")
ws.run "cmd /c python D:\\PythonCode\\base64pic.py | clip",vbhide
"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(''%s)
os.remove("F:\\PythonCode\\base64pic\\1.jpg")
@echo off
python D:\\123.py | clip
>Set ws = createObject("WScript.shell")
ws.run "cmd /c python D:\\PythonCode\\base64pic.py | clip",vbhide
制作完bat或者vbs文件,打开他们就可以实现上述功能啦!但如果制作成exe文件则会更加方便些(下一步)。
由于base64编码长度很长,可以参考一下格式保存:
![image][tmp]
your document here ...
[tmp]:data:image/png;base64, ......
[1]Markdown插入图片的完美解决方法
[2]VBS转化为exe可执行文件
[3]将图片内嵌入Markdown文档中