将numpy数组转换为可由html img标记的src读取的字节字符串



我有一个numpy数组,我想通过img html组件的src属性来显示,有点像下面的例子:

def get_placeholder_thumbnail_html_value():
encoded_image = base64.b64encode(open("../assets/placeholder_thumbnail.png", 'rb').read())
return 'data:image/png;base64,{}'.format(encoded_image.decode())

然后可以发送返回的字符串,将其分配给相应的img html组件的src属性(我使用绘图短划线回调(。

问题:在上面的例子中,我是从服务器上的png图像中完成的我怎么能用一个愚蠢的ndarray做同样的事

def get_thumbnail_html_value_from_ndarray(ndarray):
return 'data:image/png;base64,{}'.format(<what here ?>)

只要html能够正确地解释图像,它就可以被解析为jpg或其他任何东西。

编辑:我可以把它保存在服务器上作为一个png文件,然后用上面的例子把它加载回来,但它看起来效率很低,所以我不喜欢这个解决方法。

我遇到了基本相同的问题,只是增加了图像格式需要为png的条件。这是我使用cv2和base64:的解决方案

import cv2
import base64
def ndarray_to_b64(ndarray):
"""
converts a np ndarray to a b64 string readable by html-img tags 
"""
img = cv2.cvtColor(ndarray, cv2.COLOR_RGB2BGR)
_, buffer = cv2.imencode('.png', img)
return base64.b64encode(buffer).decode('utf-8')

最新更新