锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Markdown中永久嵌入bs64图片,python PIL等比列强压缩后将图片转换为bs64,2M直接压成100k

时间:2023-07-12 10:37:00 2cl75高压二极管

简介

有时候,当你写技术文档或笔记时,你会发现md语法下的插入图片要么是本地的,要么是图床

![img](./lady.jpg) ![img](http://......) 

本地的缺点是服务器加载缓慢(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
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章