从客户的POST提交中,我们成功接收了以下格式的图像data:image/jpeg;base64,/9j/....
,并且正在通过以下代码生成图像文件:
@app.route('/submission', methods=('GET', 'POST'))
def submission():
if request.method == 'POST':
raw_image = request.form['file']
#Problem Starts Here
# this doesn't work either:
# raw_image = raw_image.replace("data:image/jpeg;base64,/9j/", '');
with open(UPLOADED_IMAGES_DEST+'/image.jpeg', 'wb') as fh:
fh.write(base64.decodebytes(raw_image))
#Problem Ends Here
return jsonify(request.form)
return render_template('submission.html')
但是,由于图像是“无效或不受支持的格式”,因此无法打开。我正在尝试改善转换过程,以使其产生可见的JPEG图像。
raw_image
的开头: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCADwAUADASIAAhEBAxEB/8QAHQAAAgIDAQEBAAAAAAAAAAAABQYEBwIDCAEACf/EAEwQAAEDAwMCBAQEAwUFBQQLAAECAxEABAUGEiExQQcTUWEIInGBFDKRoRVCUiOxwdHwJGJyouEJFjOSwhdDgvEmU2ODk7LDxNLU4v/EABsBAAMBAQEBAQAAAAAAAAAAA
...
答案 0 :(得分:2)
我获取了您的数据,并对其进行了解码,它看起来非常接近我从真实文件中获取的JPEG标头(下图)。没什么问题,除了必须从/9j/4AA...
开始解码。
>>> a = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCADwAUADASIAAhEBAxEB/8QAHQAAAgIDAQEBAAAAAAAAAAAABQYEBwIDCAEACf/EAEwQAAEDAwMCBAQEAwUFBQQLAAECAxEABAUGEiExQQcTUWEIInGBFDKRoRVCUiOxwdHwJGJyouEJFjOSwhdDgvEmU2ODk7LDxNLU4v/EABsBAAMBAQEBAQAAAAAAAAAA'
>>> base64.b64decode(a)
'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05
这是我的真实JPEG图片的十六进制转储。
您必须删除data:image/jpeg;base64,
,但不要超出此范围-这会破坏图像数据。