首页 > 其他分享 >markdown将图片转换为base64格式

markdown将图片转换为base64格式

时间:2022-10-17 08:00:06浏览次数:65  
标签:markdown image base64 im 文档 格式 图片

1 背景

Markdown 是一种轻量级标记语言,使人可以将时间都花在撰写内容而不是调整格式上,用来写技术文档再合适不过了。但markdown有个痛点---添加图片不方便。

markdown添加图片的方法:

  • 方法1:插入本地图片(支持绝对路径和相对路径)
![avatar](/home/picture/1.png)
  • 方法2:插入网络图片
![avatar](https://baidu.com/pic/doge.png)

如果图片在本地,markdown中插入本地图片,这样做缺点很多:1 本地图片路径更改或丢失导致markdown找不到图片; 2 分享不灵活,mk文档发给别人时,找不到图片路径。

插入网络图片,需要自己制造图床,写文档时并不方便,另外看文档时需要网络环境。

还有一种办法,用base64转码工具,把图片转成一段字符串,然后引用这段base64编码即可,这样添加图片比较方便,但是需要一些多的动作。

  • 方法3:图片转为base64
![avatar][doge] 

# 放在文章末尾
[doge]:data:image/png;base64,iVBORw0...... 

2 图片转为base64

2.1 剪切板图片转为base64

在添加图片时,大多数情况可以使用截图工具(常用snipaste),将截图复制到剪切板,然后运行python脚本,将剪切板的截图转为base64格式字符串,然后将此字符串贴回到剪切板,供我们粘贴使用。

img2base64.py内容如下:

(python3脚本,脚本来源于网络)

import base64
from PIL import Image
from PIL import ImageGrab
import pyperclip
from io import BytesIO

im = ImageGrab.grabclipboard()

def pil_base64(image):
    img_buffer = BytesIO()
    w, h = image.size
    # image.thumbnail((480, 480))
    image.save(img_buffer, format='JPEG', quality=95)
    byte_data = img_buffer.getvalue()
    base64_str = base64.b64encode(byte_data)
    return base64_str

if isinstance(im, Image.Image):
    print(im.format, im.size, im.mode)
    px = im.load()
    msg = str(pil_base64(im))
    msg = 'data:image/png;base64,' + msg[2:-2]
    #print(msg)
    pyperclip.copy(msg)

else:
    pass

为了方便使用,可以将这个脚本制作成exe可执行程序。

# 生成可执行文件

pip install pyinstaller
pyinstaller -F -w img2base64.py  #打包成exe, 在且不包含控制台,exe默认在dist目录下

2.2 将markdown本地图片转为base64格式

写markdown文档时,如果像2.1节一样,一张图一张图转base64,但效率比较低,我们也可以写文档时先临时插入本地图片,写完之后通过脚本一次性生成base64的形式。

脚本有如下要求:

  • 1 读取markdown文件,并用正则查找出所有的本地引用标签
  • 2 替换图片标签![image-name](url)![image-name][image-name]
  • 3 在md文件后面追加上base64编码 [image-name]:图片base64编码

mark2base64.py脚本如下:


参考:

  1. markdown中图片转base64
  2. [一款图片文件转 Base64 编码的 Python GUI 工具](

标签:markdown,image,base64,im,文档,格式,图片
From: https://www.cnblogs.com/sureZ-learning/p/16797820.html

相关文章

  • markdown学习
    #markdown学习一级标题:一个#+空格标题名字一级标题 二级标题:两个##+空格标题名字二级标题 三级标题:三个###+空格标题名字三级标题 四级标题:四......
  • Markdown学习
    Markdown学习标题一级标题:#+标题名字,快捷键Ctrl+1二级标题:##+标题名字,快捷键Ctrl+2三级标题:###+标题名字,快捷键Ctrl+3备注:最多可以到六级标题字......
  • markdown.css 设置文章的样式
    返回的详情文章内容是标签加内容文字,使用markdown,css渲染样式:.markdown-body.octicon{display:inline-block;fill:currentColor;vertical-align:text......
  • Markdown语法
    Markdown语法1.标题井号+空格+标题内容(几个井号表示几级标题) 2.字体Hello,World!(正常)Hello,World!(粗体:在字体两边加两个**)Hello,World!(斜体:在字体两边加一个*)Hello,World......
  • python实现markdown文档编辑器应用
    常用的文档编辑器富文本编辑器,ckeditormarkdown编辑器,mdeditor项目中想要应用markdown编辑器:添加和编辑的页面中textarea输入框->转换为markdown编辑器1.tex......
  • Markdown表格居中显示
    参考链接:https://javaforall.cn/191896.html示例表格Markdown语法:(默认表格居左且内容文本居左)|序号|内容|描述||---|---|----------......
  • XML格式文件转JSON
    XML格式转json格式,需要用到xmltodict库。安装:pipinstallxmltodictimportxmltodictimportjsonxmlStr="""<?xmlversion="1.0"encoding="UTF-8"?><student......
  • golang中json.Marshal自定义浮点数格式化样式
    golang中如果有以下的类型typeQpsObjstruct{Keystring`json:"key"`Qpsfloat64`json:"qps"`}json.Marshal后会输出如下的字符串 {"key":"test","qp......
  • GAN初步-生成1010格式规律的向量
    GAN初步-生成1010格式规律的向量构建和训练GAN的推荐步骤:(1)从真实数据集预览数据;(2)测试鉴别器至少具备从随机噪声中区分真实数据的能力;(3)测试未经训练的生成器能否创建......
  • 网络通信——HTTP接口访问——移动数据格式JSON
        网络通信的交互数据格式有两大类,分别是JSON和XML。对于App来说,基本采用JSON格式与服务器通信。JSON相比XML的优势主要有两个:(1)手机流量很贵,表达同样的信息,J......