【Python】base64模块对图片进行base64编码和解码
图片的base64编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址。
这样做有什么意义呢?我们知道,我们所看到的网页上的每一个图片,都是需要消耗一个 http 请求下载而来的。
没错,不管如何,图片的下载始终都要向服务器发出请求,要是图片的下载不用向服务器发出请求,而可以随着 HTML 的下载同时下载到本地那就太好了,而base64正好能解决这个问题。
Base64 虽有优点,但是缺点也很明显,在使用上存在一些明显的缺陷。
是的,使用Base64的好处是能够减少一个图片的 HTTP 请求,然而,与之同时付出的代价则是CSS文件体积的增大。
而CSS文件体积的增大意味着什么呢?意味着 CRP 的阻塞。
CRP(Critical Rendering Path,关键渲染路径):当浏览器从服务器接收到一个HTML页面的请求时,到屏幕上渲染出来要经过很多个步骤。浏览器完成这一系列的运行,或者说渲染出来我们常常称之为“关键渲染路径”。
通俗而言,就是图片不会导致关键渲染路径的阻塞,而转化为 Base64 的图片大大增加了CSS文件的体积,CSS 文件的体积直接影响渲染,导致用户会长时间注视空白屏幕。HTML和CSS会阻塞渲染,而图片不会。
下面通过代码对对图片进行base64编码和解码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # -!- coding: utf-8 -!- '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' ''' #作者:cacho_37967865 #博客:https://blog.csdn.net/sinat_37967865 #文件:baseModel.py #日期:2019-07-02 #备注:图片进行base64编码,解码 ''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' import base64 import os def encode_base64( file ): with open ( file , 'rb' ) as f: img_data = f.read() base64_data = base64.b64encode(img_data) print ( type (base64_data)) #print(base64_data) # 如果想要在浏览器上访问base64格式图片,需要在前面加上:data:image/jpeg;base64, base64_str = str (base64_data, 'utf-8' ) print (base64_str) return base64_data def decode_base64(base64_data): with open ( './images/base64.jpg' , 'wb' ) as file : img = base64.b64decode(base64_data) file .write(img) if __name__ = = '__main__' : img_path = './images/background.jpg' base64_data = encode_base64(img_path) decode_base64(base64_data) |
# 如果想要在浏览器上访问base64格式图片,需要在前面加上:data:image/jpeg;base64,
备注:base64格式图片常用于尺寸较小、多处使用的、背景类图片。
————————————————
版权声明:本文为CSDN博主「cacho_37967865」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_37967865/article/details/94554568
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现