我正在 Flask 中创建一个简单的 API,它接受以 base64 编码的图像,然后使用 Pillow 对其进行解码以进行进一步处理。
我查看了一些示例(1、2、3),我想我明白了这个过程的要点,但我一直收到一个错误,即 Pillow 无法读取字符串 I给了。
这是我目前所得到的:
import cStringIO
from PIL import Image
import base64
data = request.form
image_string = cStringIO.StringIO(base64.b64decode(data['img']))
image = Image.open(image_string)
给出错误:
IOError: cannot identify image file <cStringIO.StringIO object at 0x10f84c7a0>
最佳答案
您应该尝试以下方法:
from PIL import Image
from io import BytesIO
import base64
data['img'] = '''R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLl
N48CXF8m2iQ3YmmKqVlRtW4MLwWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw=='''
im = Image.open(BytesIO(base64.b64decode(data['img'])))
您的data['img']
字符串不应包含 HTML 标签或参数 data:image/jpeg;base64
在示例 JSFiddle 中。
为了便于阅读,我已经更改了我从 Google 获取的示例的图像字符串。
关于python - 从 POST 解码 base64 以在 PIL 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070547/