今天遇到需要裁剪base64字符串的PNG图片,并保存到文件,网上找了代码,并进行了修改
使用的版本为 python 3.7
并安装了pil库 ,没有安装的话 用下面这句
pip3 install pillow
import base64
import re
import io
#记得安装pil
from PIL import Image
def deal_inspect_img(base64_str):
"""裁剪base64字符串的图片"""
base64_data = re.sub('^data:image/.+;base64,', '', base64_str)
byte_data = base64.b64decode(base64_data)
# BytesIO 对象
image_data = io.BytesIO(byte_data)
# 得到Image对象
img = Image.open(image_data)
# 裁剪图片(左,上,右,下)
x = 0
y = 0
w = 100
h = 100
img2 = img.crop((x, y, x+w, y+h))
# BytesIO 对象
imgByteArr = io.BytesIO()
# 写入BytesIO对象
img2.save(imgByteArr, format='PNG')
# 获得字节 并返回
imgByteArr = imgByteArr.getvalue()
return imgByteArr
#测试文件 包含有 data:image/jpg;base64, 开头
base64_str = 'data:image/jpg;base64,xxxxxxxxxxxxxxxxxx'
imgdata = deal_inspect_img(base64_str)
#写出字节到文件
with open('iss.png', 'wb') as f:
f.write(imgdata)