网站 ip修改备案流程,还有哪些数据库网站,管理型网站建设费用明细,建筑书店base64与BytesIO简单介绍
io.BytesIO 和 Base64 编码都是用于在内存中处理二进制数据的方法#xff0c;但它们的目的和使用场景有所不同。
1#xff09; io.BytesIO
io.BytesIO 是 Python io 库中的一个类#xff0c;它提供了一个在内存中处理二进制数据的接口#xff0…base64与BytesIO简单介绍
io.BytesIO 和 Base64 编码都是用于在内存中处理二进制数据的方法但它们的目的和使用场景有所不同。
1 io.BytesIO
io.BytesIO 是 Python io 库中的一个类它提供了一个在内存中处理二进制数据的接口模拟了一个文件对象。它允许你像操作文件一样操作内存中的二进制数据这对于处理图像、音频、视频等二进制数据非常有用。BytesIO 对象可以用于读取和写入数据并且可以轻松地将数据转换为字节字符串。
使用 BytesIO 的优点
在内存中处理数据不需要磁盘I/O。可以轻松地将数据流转换为字节字符串或字节对象。适用于需要在程序内部传递二进制数据的场景。
2 Base64 编码
Base64 是一种编码方案用于将二进制数据转换为可打印的ASCII字符。这种编码通常用于在不支持二进制数据的通信环境中传输二进制数据如电子邮件、HTTP等。Base64 编码后的字符串长度会增加约33%因为它使用64个字符来表示6个二进制位即3个二进制字节。
使用 Base64 编码的优点
可以在不支持二进制数据的环境中传输二进制数据。编码后的字符串是可打印的ASCII字符可以在文本环境中安全传输。可以用于在Web应用中传输图像和其他二进制文件。
区别
用途BytesIO 主要用于在内存中处理二进制数据流而Base64编码主要用于在文本环境中传输二进制数据。数据表示BytesIO 直接处理原始的二进制数据而Base64编码将二进制数据转换为ASCII字符。数据大小使用 BytesIO 处理的数据大小不会改变而Base64编码后的数据大小会增加约33%。传输效率在需要传输二进制数据的场景中Base64编码可能会增加传输的开销因为它需要额外的编码和解码步骤。
在处理图像时BytesIO 通常用于图像处理库如Pillow中用于读取和写入图像数据。而Base64编码则常用于Web开发中用于在HTTP请求和响应中传输图像数据。
1、base64 图片进行编码、解码
编码
import base64# 假设您有一个图像文件例如 image.jpg
with open(rC:\Users\l****1686722996428308480-1 (1).jpg, rb) as image_file:# 读取图像文件的二进制数据image_data image_file.read()# 将二进制数据编码为Base64字符串encoded_string base64.b64encode(image_data).decode(utf-8)print(encoded_string)解码
import base64
from PIL import Image
from io import BytesIO# Base64 编码的字符串
base64_string encoded_string# 去除头部信息并进行解码
image_data base64.b64decode(base64_string)# 创建 BytesIO 对象来保存解码后的数据
buffered_io BytesIO()
buffered_io.write(image_data)# 打开图片文件
img Image.open(buffered_io)# 显示图片如果需要
img.show()2、BytesIO图片进行编码、解码
编码
from PIL import Image
import io# 读取图像文件
image_path rC:\Users\l****1973_status_1686722996428308480-1 (1).jpg
with Image.open(image_path) as img:# 将图像保存到BytesIO对象中output io.BytesIO()img.save(output, formatJPEG)output.seek(0) # 将指针移回文件开头output解码
# 读取BytesIO对象中的数据
image_data output.read()# 将二进制数据解码回图像
decoded_img Image.open(BytesIO(image_data))# 显示图像
decoded_img# 保存解码后的图像
decoded_img.save(decoded_image.jpg)3、api调用
参考https://blog.csdn.net/weixin_42357472/article/details/135528846?spm1001.2014.3001.5501
flask后端接口
from flask import Flask, requestapp Flask(__name__)app.route(/receive-base64, methods[POST])
def receive_base64():# 从POST请求中获取Base64编码的字符串base64_string request.form.get(data)if base64_string:# 这里可以添加处理Base64字符串的逻辑例如解码或存储print(fReceived Base64 string: {base64_string})# 返回确认消息return Base64 string received successfully.else:# 如果没有接收到Base64字符串返回错误消息return No Base64 string received.if __name__ __main__:app.run(debugTrue)requests请求
import requests
import base64# 假设你有一个Base64编码的字符串
base64_string your_base64_encoded_string_here# 将Base64字符串转换为字节对象
data_bytes base64.b64decode(base64_string)# 构建请求的payload
payload {data: data_bytes
}# 发送POST请求
response requests.post(http://your-flask-server-address/receive-base64, filespayload)# 打印响应内容
print(response.text)