我在烧瓶中制作了一个简单的API,它接受一个以base64编码的图像,然后使用枕头对其进行解码以进行进一步的处理。
我看了一些例子(1,2,3),我想我得到了这个过程的要点,但是我一直得到一个错误,枕头无法读取我给它的字符串。
到目前为止我得到的是:
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>
对巫术很抱歉,但没有一个答案对我完全有效。下面是Python 3.6和Flask 0.13的代码。
服务器:
客户端JS:
你应该试试这样的方法:
您的
data['img']
字符串不应包含示例JSFiddle中的HTML标记或参数data:image/jpeg;base64
。为了便于阅读,我修改了Google中的一个示例的图像字符串。
在
img
字段中包含一个元数据前缀data:image/jpeg;base64,
。通常,当将图像数据嵌入到文档或样式表中时,此元数据在CSS或HTML数据URI中使用。它可以向呈现浏览器提供嵌入数据的MIME类型和编码。您可以在base64解码之前去掉前缀,这将导致PIL可以加载的有效图像数据(见下文),但您确实需要质疑元数据是如何被提交到服务器的,因为它通常不应该被提交。
相关问题 更多 >
编程相关推荐