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代码:
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 保存到本地的文件名 """ 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!")
img = base64.urlsafe_b64decode(data)
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=="
""" ext = filename.split(".")[-1]
with open(filename, "rb") as f: img = f.read()
data = base64.b64encode(img).decode()
src = "data:image/{ext};base64,{data}".format(ext=ext, data=data) return src
if __name__ == '__main__':
print(encode_image("baidu.png"))
|