在Python中将data:image从base64转换为JPEG

时间:2018-07-04 00:43:51

标签: python image base64

从客户的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 ...

1 个答案:

答案 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图片的十六进制转储。

enter image description here

您必须删除data:image/jpeg;base64,,但不要超出此范围-这会破坏图像数据。

相关问题