imread函数如何读取流数据

Python的许多图像库里面有个函数叫imread - Ref:Python的各种imread函数在实现方式和读取速度上有何区别?,这个函数传入的参数是fname,也就是文件名或URL路径。可以说,算是相当友好了。

但是,我今天碰到的问题是这样的,Client发送一张图片到Server上进行处理,图片的内容已经在消息包里面了,格式是Bytes,这种时候,如果调用imread,就需要先把消息流存为本地文件,然后根据文件名调用imread函数,有种脱裤子放屁的感觉,而且性能肯定受影响。

研究了好久,包括PIL.Image.frombytes函数等,最后找到个比较好的解决方法。
使用StringIO/BytesIO。

介绍一下,Python在内存中读写数据,用到的模块是StringIO和BytesIO。StringIO操作的是string,BytesIO操作的二进制数据。 如果你需要对获取到的数据进行操作,但是你并不想把数据写到本地硬盘上,这时候你就可以用stringIO。

from PIL import Image
from io import BytesIO

image_path="E:/Python/a.png"

def read_file( path ):
    with open( path, "rb+" ) as f:
        stream = f.read()
    return stream

stream = read_file( image_path )

image=Image.open(BytesIO(stream))
print( image )

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,267评论 0 10
  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 8,262评论 0 10
  • IO在计算机中是指input/output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快...
    Sun_atom阅读 5,649评论 0 0
  • 文:而立虚云 1.对于电气设备公司的电气产品如何监控,应该考虑到公司所处的具体市场环境。如果环境非常单一,就要考虑...
    通灵半藏阅读 1,414评论 0 0
  • 因为以前教我们唱歌的谢老师身体不好,去上海做手术了,我们也有几个星期没有学了。今天来了一个新的老师,杨老师来给我们...
    杰西恩倍妈妈阅读 1,355评论 0 0

友情链接更多精彩内容