Python实用模块(二十一)base64
软硬件环境
windows 10 64bits
anaconda with python 3.7
base64
flask 1.1.2
前言
图片处理是Python
编程中需要掌握的基本技能,而python
中也内置了相应的库,它就是base64
。本篇就来分享如何利用base64
库来将图片与字符串进行互相转换。
图片转成字符串
以我网站的logo
图片为例
import base64# 以rb方式读取图片文件,获得原始字节码,b是二进制的意思
with open("logo.jpg", 'rb') as jpg_file:byte_content = jpg_file.read()if byte_content:# 编码成base64字节码base64_bytes = base64.b64encode(byte_content)# 转换成字符串base64_string = base64_bytes.decode('utf8')print(base64_string)
程序执行结果是这样的
如果需要将字符串通过JSON
的方式进行传输的话,就可以结合json
库一起操作了
字符串转换成图片
这种情况,图片数据一般都是json
的方式传输,在接收端看到的就是编码后的字符串,拿到字符串后,就可以使用base64
提供的解码方法解码并保存到本地,为了示例的完整性,这里使用2个外部工具,一个是在线的图片转换工具,网站地址是 https://www.base64-image.de/,上传一张图片得到base64
编码后的字符串;另一个工具是postman
,通过它模拟一个客户端的POST
请求,而在服务器,我们利用flask
框架实现一个后台服务,处理这个http
请求
在上图中,图片的数据是从标注的位置开始的,把这串字符拷贝下来,填充到postman
中,如下所示
这是一个POST
请求,body
中是一个json
数据,格式是这样的
{"img":"图片base64编码字符串"}
然后在请求的Header
部分,加上Content-Type
字段,它的值为application/json
,这样,客户端的部分就准备好了
接下来,编写服务器端的代码,使用flask
这个轻量级的web
框架
from flask import Flask, request, jsonify
import base64app = Flask(__name__)@app.route('/', methods=['POST'])
def get_image():# 取出字符串image_base64_string = request.get_json()['img']print(image_base64_string)# 解码字符串image_data = base64.b64decode(image_base64_string)with open('test.jpg', "wb") as jpg_file:jpg_file.write(image_data)return jsonify({"code": 200})if __name__ == '__main__':app.run(port=3000, debug=True)
执行上述代码,启动flask
服务
然后来到postman
,发送刚才准备好的http
请求,可以看到,服务器端返回了json
数据
而此时,服务器端也成功地接收到了图片字符串并解码存储到了本地硬盘
参考资料
https://en.wikipedia.org/wiki/Base64
Python实用模块(二十一)base64相关推荐
- python四大软件-Python实用模块(二十)Apscheduler
软硬件环境 windows 10 64bits anaconda with python 3.7 视频看这里 前言 说起定时任务,第一反应应该是windows自带的计划任务或者linux自带的cron ...
- Python实用模块(二十二)easydict
软硬件环境 windows 10 64bit anaconda3 with python 3.7 easydict 1.9 前言 easydict能够让我们使用.操作符,就像访问属性attribute ...
- Python入门(二十一)- 常见模块
二十一.常见模块 上一章介绍了Python模块的相关知识,在实际开发中,Python的很多功能都已经有了成熟的第三方实现,一般不需要开发者"重复造轮子",当开发者需要完成某种功能时 ...
- Python实用模块
哈喽 大家好! 我是一个无聊的人类,今天我找到了一些Python实用的模块,分享给大家. 上次看到有人给我起了个外号 有趣的人类 言归正传 开始我们的开始(其实是废话) 1.屏蔽脏话 编写一个Pyth ...
- python 日志输出为json格式文件_Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)...
一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...
- Python学习日记(二十一) 异常处理
程序中异常的类型 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基 ...
- Python实用模块之pycurl
软硬件环境 ubuntu 19.04 64bit anaconda3 with python 3.7.3 pycurl 7.43.0.2 简介 CURL是一个基于URL进行数据传输的命令行工具,使用C ...
- 【Python学习系列二十一】pandas库基本操作
pandas很强大,操作参考官网:http://pandas.pydata.org/pandas-docs/stable/ 也有一份10分钟入门的材料:http://pandas.pydata.org ...
- Python Tricks(二十一)—— 排列组合的计算
使用循环: 阶乘的实现: def fac(n):r = 1.for i in range(1, n+1):r *= ireturn r 排列:Anm=m!n!=(m−n+1)⋯mA_m^n=\frac ...
最新文章
- linux驱动:音频驱动(一)ALSA
- 阿里某p9哭穷:300万年薪,依然挣扎在温饱线上!
- java 常见中文乱码问题解决
- libSVM笔记之(一)在matlab环境下安装配置libSVM
- 【转】MVVM大比拼小结
- Spring AOP失效之谜
- Solr进阶之Solr综合文本相似度的多因素权重排序实现
- Things3 for mac(Mac任务管理神器)
- LINUX删除指定子目录下所有指定文件名
- mongodb的管理员和安全认证
- SQLServer数据库备份与还原
- 裁判文书网爬虫(2019.5.15更新)
- 管理科学与运筹学(MS/OR)国际期刊最新权威排名
- 政府应用系统应用解决方案
- 去掉右键烦人的多余菜单项
- Android 调用12306接口,聚合数据Android SDK 12306火车票查询订票演示示例 编辑
- Mac Android Studio Flutter环境配置之第一个Futter项目
- 基于卷积神经网络的手势识别研究论文
- 悠悠古舟渡,浅浅时光去
- 天大的本事,顶不上一张会说话的嘴