Python:data:image/png;base64图片编码解码

简介: Python:data:image/png;base64图片编码解码

编码后的内容,可以在浏览器中直接打开,提示:先去掉回车

data类型的Url大致有下面几种形式

data:,<文本数据>
data:text/plain,<文本数据>
data:text/html,<HTML代码>
data:text/html;base64,<base64编码的HTML代码>
data:text/css,<CSS代码>
data:text/css;base64,<base64编码的CSS代码>
data:text/javascript,<Javascript代码>
data:text/javascript;base64,<base64编码的Javascript代码>
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据

Python3代码

# -*- coding: utf-8 -*-


import base64
import re
import uuid


def decode_image(src):
"""
解码图片
:param src: 图片编码
eg:
src="data:image/gif;base64,R0lGODlhMwAxAIAAAAAAAP///
yH5BAAAAAAALAAAAAAzADEAAAK8jI+pBr0PowytzotTtbm/DTqQ6C3hGX
ElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgd
LbXsFZYmSMPnHLB+zNJFbq15+SOf50+6rG7lKOjwV1ibGdhHYRVYVJ9Wn
k2HWtLdIWMSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbF
ZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw=="

:return: str 保存到本地的文件名
"""
# 1、信息提取
result = re.search("data:image/(?P<ext>.?);base64,(?P<data>.)", src, re.DOTALL)
if result:
ext = result.groupdict().get("ext")
data = result.groupdict().get("data")

else:
raise Exception("Do not parse!")

# 2、base64解码
img = base64.urlsafe_b64decode(data)

# 3、二进制文件保存
filename = "{}.{}".format(uuid.uuid4(), ext)
with open(filename, "wb") as f:
f.write(img)

return filename


def encode_image(filename):
"""
编码图片
:param filename: str 本地图片文件名
:return: str 编码后的字符串
eg:
src="data:image/gif;base64,R0lGODlhMwAxAIAAAAAAAP///
yH5BAAAAAAALAAAAAAzADEAAAK8jI+pBr0PowytzotTtbm/DTqQ6C3hGX
ElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgd
LbXsFZYmSMPnHLB+zNJFbq15+SOf50+6rG7lKOjwV1ibGdhHYRVYVJ9Wn
k2HWtLdIWMSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbF
ZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw=="

"""
# 1、文件读取
ext = filename.split(".")[-1]

with open(filename, "rb") as f:
img = f.read()

# 2、base64编码
data = base64.b64encode(img).decode()

# 3、图片编码字符串拼接
src = "data:image/{ext};base64,{data}".format(ext=ext, data=data)
return src


if name == '__main__':
# 下载百度首页logo保存到本地 baidu.png
# https://www.baidu.com/img/bd_logo1.png

# 编码测试
print(encode_image("baidu.png"))
# src = "data:image/png;base64,iVBORw0KGgoAAAA..."

# 解码测试
# print(decode_image(src))

参考

python解码data:image开头的图片地址

            </div>
目录
相关文章
|
机器学习/深度学习 编解码 算法
人脸识别的主要流程
【1月更文挑战第4天】
|
SQL 存储 分布式计算
Hive 3.x的安装部署 - Ubuntu
Hive 3.x的安装部署 - Ubuntu
1233 0
|
设计模式 JSON 数据可视化
2023最新Python阅读书籍推荐
入门的书很多,但能让新手轻松看懂的就少了,作者写的思路非常清晰,对每一个知识点讲解的很到位,不多不少,对初学者来说,力道刚刚好。这本书是Python入门最好的书。《A byte-of-python》就像一把钥匙一样,开启编程世界的大门。而且篇幅也短,适合零基础小白。
3378 2
2023最新Python阅读书籍推荐
|
7天前
|
数据采集 人工智能 安全
|
17天前
|
云安全 监控 安全
|
3天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
286 164