-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimageDecoder.py
More file actions
68 lines (53 loc) · 1.98 KB
/
Copy pathimageDecoder.py
File metadata and controls
68 lines (53 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# -*- 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 = 'data/img/' + "{}.{}".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