【Python】base64模块对图片进行base64编码和解码

图片的base64编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址。
这样做有什么意义呢?我们知道,我们所看到的网页上的每一个图片,都是需要消耗一个 http 请求下载而来的。
没错,不管如何,图片的下载始终都要向服务器发出请求,要是图片的下载不用向服务器发出请求,而可以随着 HTML 的下载同时下载到本地那就太好了,而base64正好能解决这个问题。
Base64 虽有优点,但是缺点也很明显,在使用上存在一些明显的缺陷。
是的,使用Base64的好处是能够减少一个图片的 HTTP 请求,然而,与之同时付出的代价则是CSS文件体积的增大。
而CSS文件体积的增大意味着什么呢?意味着 CRP 的阻塞。
CRP(Critical Rendering Path,关键渲染路径):当浏览器从服务器接收到一个HTML页面的请求时,到屏幕上渲染出来要经过很多个步骤。浏览器完成这一系列的运行,或者说渲染出来我们常常称之为“关键渲染路径”。
通俗而言,就是图片不会导致关键渲染路径的阻塞,而转化为 Base64 的图片大大增加了CSS文件的体积,CSS 文件的体积直接影响渲染,导致用户会长时间注视空白屏幕。HTML和CSS会阻塞渲染,而图片不会。

下面通过代码对对图片进行base64编码和解码:

# -!- coding: utf-8 -!-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:baseModel.py
#日期:2019-07-02
#备注:图片进行base64编码,解码
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''import base64
import osdef 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_datadef 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格式图片常用于尺寸较小、多处使用的、背景类图片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql错误2003 -Can't connect toMySQL server on 'localhost'(10061)解决办法

错误图片 昨天晚上还在用mysql来存储东西,而今天早上发现mysql数据库根本打不开,吓了我一大跳,本来就想重装mysql服务,但是我的数据库都没了,相当于大楼盖起来了,地基一下出现了裂缝,后来经过研究解决办法 如下 我发现mysql的服务一直无法启动如图 显示Cant connect toMySQL s…

【Python实战】使用python计算多种还款方式的还款计划

随着人们经济活动的增加,用钱的地方越来越多,不管是像买房这样的大额支出还是个人消费型支出,越来越多的人选择贷款来解决眼前的经济危机。 而申请贷款就涉及到选择不同的还款方式,所需要偿还的欠款综合也大有不同,那么…

echarts自定义showlading()样式和文本

1、首先引入echarts.js 2、在页面定义自己的echarts变量 var myChart echarts.init(document.getElementById(main)); 3、自定义showLoading()样式 myChart.showLoading(default, {text:统计中,请稍候...,maskColor: #404a59,textColor: #fff,}); text:文本内…

测试人员做到这几点,线上80%的BUG将落入你手,企业将避免重大风险

BUG事故给敲了很大的警钟,也给公司带来重大损失,作为测试人员,我们如何提现发现线上BUG并及时解决,避免落入用户手中,给企业带来无法挽回的损失。 案例1: 1月20日凌晨,拼多多App因技术漏洞&am…

解决$ is not define

今天写js的时候,发现怎么也没有效果。然后我前端调试的时候报这样的错 $ is not define 这个错误我以前也出现过。所以就这个错误的解决,我来总结一下。 1.首先,"$"这个符号是在jquery中定义的。所以你要看一下,你有没…

模拟导入系统通讯录5000+手机号 校验大量数据处理

模拟导入系统通讯录5000手机号 校验大量数据处理 之前再测试一个导入手机通讯录系统时,随机抽了几个人的手机进行了测试,都导入显示正常 当公司BD进行项目试用时,导入通讯录一直处于下图加载中 1、于是进行抓包查看日志进行定位&#xff0c…

Monkey随机性能压测初探(一)

Monkey介绍 Monkey程序由Android系统自带,是Android SDK提供的一个命令行工具, 可运行Android模拟器和实体设备上。Monkey会发送伪随机的用户事件流,通过Monkey程序模拟用户触摸屏幕、滑动、 按键等操作来对程序进行压力测试,检测…

【Java】使用前准备工作配置环境变量

我们要使用java前,必须先安装JDK并且配置相关的环境变量,如果我们未配置环境变量,那么我们在cmd命令中,输入javac,会提示“javac”不是内部或外部命令,这里主要介绍如何配置jdk的环境变量。 JDK官网下载&a…

Jmeter性能测试工具Timer定时器详解

jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很重要的一个元件,jemter提供了9种定时器,下面一一介绍: 一、定时器的作用域 1、定时器是在每个…

【Maven】Java项目管理工具

一、为什么要Maven 在开发中经常需要依赖第三方的包,包与包之间存在依赖关系,版本间还有兼容性问题,有时还里要将旧的包升级或降级,当项目复杂到一定程度时包管理变得非常重要。 Maven是当前最受欢迎的Java项目管理构建自动化综合…

fiddler抓包工具配置详解

没有解决不了的问题,只是没有找到合适的方法 fiddler官网 https://www.progress.com/ 官网下载fiddler https://www.telerik.com/download/fiddler/fiddler4 fiddler插件下载 https://www.telerik.com/fiddler/add-ons 最近看到很多人都在问的一个问题&#xff0…

【Maven】Eclipse中的Maven项目安装与配置

上一篇文章我们了解到了Maven的基本信息和如何在电脑本地安装Maven,这篇文章主要介绍如何在Eclipse关联Maven的配置和本地仓储地址,并且如何创建一个Maven项目、关联依赖包等。 一、关联Eclipse和Maven 点击Windows菜单栏下的Preference,找…

python两个字典合并,两个list合并

python两个字典合并,两个list合并 1.两个字典:a{a:1,b:2,c:3} b {aa:11,bb:22,cc:33} 合并1:dict(a,**b) 操作如下: 合并2:dict(a.items()b.items()) 如下: 合并3:c {} c.update(a) c.up…

C++ 一个字符串只包含K和D。K表示杀人,D表示死亡。计算连续杀敌次数,阵亡则归零。

题&#xff1a; 首先笔者的第一思路是前后两个字符串比较。如果相同index。 #include<iostream> #include<stdio.h> #include<string> using namespace std; int main() {string s;cout << "6请输入字符串&#xff1a;" << endl;cin …

【业务办理】广州市户口市内迁移流程

一、申办条件 符合下列条件之一的本市户籍人员&#xff08;除学校学生集体户口外&#xff09;&#xff0c;可办理户口市内迁移。 1.迁入本人合法住宅房屋地址。 2.投靠直系亲属&#xff0c;迁入其合法住宅房屋地址&#xff0c;或迁入其家庭户内。 3.因离婚、房屋所有权发生转移…

【Python】pyCryptodome模块实现AES加密、解密

高级加密标准&#xff08;英语&#xff1a;Advanced Encryption Standard&#xff0c;缩写&#xff1a;AES&#xff09;&#xff0c;在密码学中又称Rijndael加密法&#xff0c;是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES&#xff0c;已经被多方分析且广…

jmeter环境部署

win环境下&#xff1a; 1、复制jmeter整个包到本地解压、安装jdk 2、jdk环境环境变量配置&#xff08;电脑-属性-高级系统设置-环境变量&#xff09; 系统变量JAVA_HOME 变量值C:\Program Files\Java\jdk1.8.0_101 用户变量path 变量值%JAVA_HOME%\bin cmd下输java或jav…

【Python】pdf2image模块+poppler将PDF转换为图片

有时我们需要将PDF转换成图片&#xff0c;今天我们主要说的是pdf2imagepoppler对PDF转换成图片格式。 pdf2image是个包装器&#xff0c;真正的转换工具是poppler GitHub地址&#xff1a;https://github.com/Belval/pdf2image &#xff0c;上面也有相关的配置说明。 1、安装pdf…

jmeter五种参数化方式之CSV Data Set Config参数化

一、用户定义的变量 一般会设置全局不变的参数&#xff0c;如host、账号、密码等 设置名称username&#xff0c;password 值王荔&#xff0c;123456 线程设置2次和循环设置2次&#xff0c;2次采样器传参和结果一样 二、用户参数 添加用户参数 设置3组参数 参数化 当线程设置…

【Liunx服务器】阿里云服务器下部署多个tomcat服务

现在有这样一个场景&#xff0c;一个阿里云服务器上面已经有tomcat项目和多个maven项目&#xff0c;现在需要在一个新项目中配置一个空的tomcat&#xff0c;现将具体流程记录下来。 1.下载tomcat包或者找到已下载的包 2.将tomcat的包解压到指定项目目录&#xff1a;/data/proj…