2024-07-07 06:37:30 发布
网友
问题是从内存中加载jpeg编码的图像。
我从socket收到一个字符串:
jpgdata = self.rfile.read(sz)
我知道这是jpeg编码的图像。
我需要破译它。 最愚蠢的解决方案是:
o = open("Output/1.jpg","wb") o.write(jpgdata) o.close() dt = Image.open("Output/1.jpg")
问题是如何在记忆中做同样的事情?
PIL的Image.open对象接受任何类似文件的对象。这意味着您可以将图像数据包装在StringIO对象上,并将其传递给Image
from io import BytesIO file_jpgdata = BytesIO(jpgdata) dt = Image.open(file_jpgdata)
或者,尝试将self.rfile作为参数传递给Image.open—它也可以工作。(对于Python 3-对于Python 2,使用from cStringIO import StringIO as BytesIO)
self.rfile
from cStringIO import StringIO as BytesIO
使用StringIO,这样Image可以像访问文件一样访问数据。
PIL的Image.open对象接受任何类似文件的对象。这意味着您可以将图像数据包装在StringIO对象上,并将其传递给Image
或者,尝试将
self.rfile
作为参数传递给Image.open—它也可以工作。(对于Python 3-对于Python 2,使用from cStringIO import StringIO as BytesIO
)使用StringIO,这样Image可以像访问文件一样访问数据。
相关问题 更多 >
编程相关推荐