我需要读取Base64编码的图像(由用户上传到Dash应用程序),使用opencv进行一些操作(现在跳过此操作),并将其转换回Base64,以便它可以在浏览器中显示。问题是,我从来没有设法在浏览器中看到输出图像,但我没有得到任何错误。
def parse_contents(contents):
img1 = data_uri_to_cv2_img(contents)
_, buffer = cv2.imencode('.jpg', img1)
jpg_as_text = base64.b64encode(buffer.tobytes())
second_part = str(jpg_as_text).split('/', 1)[-1]
to_save = contents.split(',')[0]
one_string = to_save + ',' + '/'+ second_part
return html.Div([
html.Img(src=one_string, style={'height':'10%',
'width':'10%'}),
html.Hr(),
html.Div('Raw Content'),
html.Pre(one_string + '...', style={
'whiteSpace': 'pre-wrap',
'wordBreak': 'break-all'
})
])
@app.callback(
Output('output-image-upload', 'children'),
Input('store-data', 'data')
)
输入数据如下所示:内容物=
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMA..
当我在笔记本中运行代码时,我看到输出图像,但在应用程序中,它看起来像在图片上
1条答案
按热度按时间l5tcr1uw1#
函数
cv2.imencode()
返回一个Numpy数组,因此需要在编码之前将其转换为常规JPEG文件中的字节数: