我正在读取图像,将其编码为base64,并将其作为有效载荷的一部分发送到Flask应用程序。在应用中,字符串会被解码并通过PIL.Image
和io.BytesIO
加载来检查其有效性。当我在shell中运行步骤时,它们会正确执行。当我运行服务器并从客户端传递数据时,我得到TypeError: 'unicode' does not have the buffer interface
。为什么我会收到此错误以及如何解决?
with open(args.pngfile) as f:
payload['image'] = f.read().encode('base64')
requests.post(URL, json=payload, headers={'Content-Type': 'application/json'})
image_str = request.json['image']
decoded_image_str = image_str.decode('base64')
Image.open(io.BytesIO(decoded_image_str))
Traceback (most recent call last):
File "/home/parin.porecha/image_service/image_service_venv/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/home/parin.porecha/image_service/image_service_venv/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/parin.porecha/image_service/image_service_venv/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/parin.porecha/image_service/image_service_venv/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/home/parin.porecha/image_service/image_service_venv/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./application.py", line 35, in compress
response = compress(request)
File "./processor.py", line 56, in compress
Image.open(io.BytesIO(decoded_image_str))
TypeError: 'unicode' does not have the buffer interface
Python 2.7.3
Flask 0.10.1
Pillow 2.9.0