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

简介

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

![img](./lady.jpg)

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

本地的缺点是到服务器上加载较慢(gitgub)、或者是发文档给别人的时候忘记发图。。。

图床这种东西嘛、哪天说不定就没了

之前看到过将图片直接内嵌入文档里,当然缺点就是会增大文件体积,但是解决了图片丢失的可能哇

又有人就会说,一个几M的图片转换出来的bs64码比我的文章还长啊(不信你试一下复制下面的bs64看一下多少字符,小新复制的时候死机-.-),有没有什么办法呢??

办法肯定是有的

给图片编号,并将所有的图片base64编码放在文档的最后即可,格式如下:

在插入图片的地方:![图片缺失描述][图片编号]

在文档最后:[图片编号]:data:image/jpg;base64,base64编码

但是这样又有一个缺点就是Typora会卡,现在直接说打不开了。。实际上才不到4M

!!!这就很让我头疼了,于是琢磨了一下该压缩一下子了,之前没有经过压缩存储到md文档里图片还是比较大的,于是又研究了py压缩

效果

格式!!!

在插入图片的地方:![图片缺失描述][图片编号]

在文档最后:[图片编号]: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中的bs64默认是没有自动换行,直接复制一行很舒服

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/%E6%88%91%E7%9A%84%E8%97%8F%E5%B0%B8%E4%B8%8D%E8%A7%81%E4%BA%86/

这是github Page静态托管,正常显示,实际再Typora编辑过程中我的文章一千多字吧,加了三张图片的bs64,变成3w多字。。。后台看了下占用的内存不大,但是可能是typora本身加载数据量的问题吧,在3w多字符中复制粘贴有点卡顿延迟(我32G内存空余60%多)。

无损压缩

使用方法:直接拉到代码底部,修改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

原文链接:https://blog.csdn.net/weixin_43031092/article/details/106672965

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值