Markdown中永久嵌入bs64图片,python PIL等比列强压缩后将图片转换为bs64,2M直接压成100k
时间:2023-07-12 10:37:00
简介
有时候,当你写技术文档或笔记时,你会发现md语法下的插入图片要么是本地的,要么是图床
 
本地的缺点是服务器加载缓慢(gitgub)、或者在给别人发文件时忘记发图片。
图床这种东西,有一天可能会消失
我以前见过直接将图片嵌入文档。当然,缺点是它会增加文件的体积,但它解决了图片丢失的可能性
有人会说,一张几M的图片被转换了bs64码比我的文章长(如果你不相信,试着复制下面的文章。bs64看看有多少字符,小新复制时死了-.-),有什么办法吗?
一定有办法
给图片编号,并将所有图片编号base64编码放在文档的最后即可,格式如下:
插图:![图片缺失描述][图片编号]
文档结尾:[图片号]:data:image/jpg;base64,base64编码
但另一个缺点是,这是另一个缺点Typora会卡,现在直接说打不开。。其实不到4。M
!!!这让我头疼,于是我想了想是时候压缩了。以前没有压缩储存过md文档中的图片还是比较大的,所以又研究了一遍py压缩
GIthub项目地址
效果
格式!!!
插图:![图片缺失描述][图片编号]
文档结尾:[图片编号]:data:image/jpg;base64,base64编码
在线转换
直接Bing搜图片转bs64
比如这里
py转换bs64
import base64 f=open('lady.jpg','rb') #图文件lady.jpg,自行更改 pbs64=base64.b64encode(f.read()) #阅读文件内容,转换为base64编码 f.close() print(pbs64)
以这种方式进行转换bs64码py会卡死(2k lines。。),所以稍微改进一下,在文本文件中写下大量的字节流(bs64.txt)使用记事本打开时不会卡住,实测记事本卡住两秒钟,editplus好多了,基本没有这样的问题,而且editplus中的bs默认情况下,自动换行,直接复制一行很舒服
import base64 f=open('lady.jpg','rb') #图文件lady.jpg,自行更改 pbs64=base64.b64encode(f.read()) #阅读文件内容,转换为base64编 f.close() #print(pbs64) mf=open("bs64.txt","wb") #存储新的目标文件bs64码 mf.write(pbs64) mf.close
你问我为什么不在这里举个例子??CSDN无法承受复制bs64码。。。不信看文末,
【我原本在这里复制嵌入bs64,但它卡住了。。无法保存或发表文章
看我的博客网站为例
http://kearney.club/2020/06/11/我的藏尸消失了/
这是github Page静态托管,正常显示,实际显示Typora我的文章在编辑过程中有1000多个字,加了三张图片bs64,变成3w多字。。。后台看占用的内存不大,但可能是typora加载数据量本身的问题是3w复制粘贴多字符有点卡滞延迟(我32)G60%以上的内存空余)。
无损压缩
使用方法:直接拉到代码底部,修改picturepath即可
图片和代码需要在同一目录下
放置省略代码github上去。省里的每个人看起来都很烦。 https://github.com/BackMountainDevil/image-into-bs64
def img_bs64(infile,outfile='', savefile =''):
compress_image(infile)
outfile = get_outfile(infile, outfile)
f=open(outfile,'rb')
pbs64=base64.b64encode(f.read())
f.close()
dir, suffix = os.path.splitext(infile)
savefile = '{}-out{}'.format(dir, '.txt')
mf=open(savefile,"wb")
mf.write(pbs64)
mf.close
os.remove(outfile)
if __name__ == '__main__':
picturepath= "luffy.jpg"
img_bs64(picturepath)
代码都cv完了,真的不点个赞再走吗??
到 GIthub点个Star也成啊
参考
- https://github.com/BackMountainDevil/image-into-bs64
- https://cn.bing.com/search?q=%e5%9b%be%e7%89%87%e8%bd%acbs64&qs=SC&pq=%e5%9b%be%e7%89%87%e8%bd%acbs&sc=1-5&cvid=5B916F1601B6423BBAC2240FC489E031&FORM=QBRE&sp=1
- https://oktools.net/image2base64
- https://blog.csdn.net/baidu_31492511/article/details/90704123
- https://blog.csdn.net/cxs123678/article/details/82533306
- https://www.jianshu.com/p/280c6a6f2594
- https://www.runoob.com/python/python-files-io.html
- https://blog.csdn.net/baidu_33221362/article/details/81566874
- https://blog.csdn.net/qq_31567335/article/details/82322858?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf
- https://www.cnblogs.com/li1992/p/10675769.html
- https://blog.csdn.net/julac/article/details/105492336
- https://github.com/BackMountainDevil/image-into-bs64
- https://blog.csdn.net/qq_36387683/article/details/100579736
![picture][1]
其它正文
末尾
[1]:data:image/jpg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAEOKADAAQAAAABAAAFoAAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8IAEQgFoAQ4AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAMCBAEFAAYHCAkKC//EAMMQAAEDAwIEAwQGBAcGBAgGcwECAAMRBBIhBTETIhAGQVEyFGFxIweBIJFCFaFSM7EkYjAWwXLRQ5I0ggjhU0AlYxc18JNzolBEsoPxJlQ2ZJR0wmDShKMYcOInRTdls1V1pJXDhfLTRnaA40dWZrQJChkaKCkqODk6SElKV1hZWmdoaWp3eHl6hoeIiYqQlpeYmZqgpaanqKmqsLW2t7i5usDExc