流光图像未更新



我是Python世界和Streamlit的新手,并试图用Streamlit建立一个连接到websocket的小应用程序,并在每条消息上更新图像。我实现了以下两个文件:

import websockets
import asyncio
import streamlit as st
from PIL import Image
from util import consumer    
st.set_page_config(page_title="stream", layout="wide")
status = st.empty()
connect = st.checkbox("Connect to WS Server")
placeholder_image = Image.open('placeholder.png')
image = st.image(placeholder_image)
if connect:
asyncio.run(consumer(status, image))
else:
status.subheader(f"Disconnected.")

和util文件:

import io
import websockets
import json
import base64
from PIL import Image
import streamlit as st
WS_CONN = "ws://localhost:8765"

async def consumer(status, image):
websocket = await websockets.connect("ws://localhost:8765")
status.subheader(f"Connected to websocket!")
async for message in websocket:
current_image = Image.open(io.BytesIO(base64.b64decode(json.loads(message)["image"])))  # until here it works fine, sample log is <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1280x720 at 0x129D81FD0>
image.image = current_image # image is not being updated

当前的问题是,当我试图在websocket消息处理程序中设置图像时,图像没有更新。有什么我做错的流光API在这里吗?也许是缓存问题?

您在应用程序中绘制图像的唯一位置是在以下行:

placeholder_image = Image.open('placeholder.png')
image = st.image(placeholder_image

据我所知,图像placeholder.png没有更新。

请做st.image(image_from_consumer)

最新更新