You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将socket接收的图像字节流直接转换为图像展示无需保存

Python Socket接收图像字节流直接展示实现

初始实现(先存本地再读取)

最初的实现逻辑是将接收到的图像字节流写入本地磁盘保存,代码如下:

from socket import *
import cv2

port = 9999
s = socket(AF_INET, SOCK_STREAM)
s.bind(('', port))
s.listen(1)
conn, addr = s.accept()
print("Connected by the ",addr)

with open('/home/Desktop/frame/my_image.png', 'wb') as file:
    while True:
        data = conn.recv(1024*8)
        if not data: break
        file.write(data)

conn.close() 

核心需求

无需从保存目录读取图像,直接将收到的字节数据转换为图像并展示,省略先存盘再读取的环节。

可正常运行的最终实现代码

from socket import *
import datetime
import cv2
import PIL.Image as Image
from PIL import ImageFile, Image
import io
import base64
import numpy as np
import pickle

date_string = datetime.datetime.now().strftime("%Y-%m-%d-%H:%M")
port = 9999
s = socket(AF_INET, SOCK_STREAM)
s.bind(('', port))
s.listen(1)
conn, addr = s.accept()
img_dir = '/home/Desktop/frames_saved/'
img_format = '.png'
b=bytearray()

print("Connected by the ",addr)

with open(img_dir+date_string+img_format, 'wb') as file:
    while True:
        data = conn.recv(1024*1024*1)
        if not data: break
        file.write(data)
        b += data

conn.close()
ImageFile.LOAD_TRUNCATED_IMAGES = True
image = Image.open(io.BytesIO(b))
image.show()

如果不需要保留本地图像备份,可直接删除代码中写文件的相关逻辑,仅保留字节流拼接b += data的部分即可。

内容的提问来源于stack exchange,提问作者user11597888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:15:07