首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BytesIO对象到图像

BytesIO对象到图像
EN

Stack Overflow用户
提问于 2015-08-25 15:55:05
回答 1查看 14.3K关注 0票数 6

我正在尝试使用枕头在我的程序中保存一个字节串从我的相机到一个文件。下面是一个示例,它使用LSB和12位来表示分辨率为10x5像素的灰度图像:

代码语言:javascript
运行
复制
import io
from PIL import Image

rawBytes = b'_\x00`\x00[\x00^\x00`\x00`\x00\\\x00\\\x00Z\x00\\\x00_\x00[\x00\\\x00\\\x00`\x00]\x00\\\x00^\x00_\x00\\\x00\\\x00]\x00]\x00_\x00]\x00]\x00Z\x00\\\x00^\x00\\\x00Z\x00^\x00_\x00]\x00^\x00Z\x00\\\x00Z\x00\\\x00]\x00_\x00]\x00^\x00Z\x00[\x00[\x00X\x00]\x00]\x00Z\x00'
rawIO = io.BytesIO(rawBytes)
rawIO.seek(0)
byteImg = Image.open(rawIO)
byteImg.save('test.png', 'PNG')

但是,我在第7行(使用Image.open)中得到了以下错误:

代码语言:javascript
运行
复制
OSError: cannot identify image file <_io.BytesIO object at 0x00000000041FC9A8>

来自枕头的文档暗示这是一条道路。

我试着应用

但不能让它起作用。为什么这不管用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 17:44:59

我不确定生成的图像应该是什么样子(有示例吗?),但是如果要将每个像素有12位的压缩图像解压缩为16位图像,可以使用以下代码:

代码语言:javascript
运行
复制
import io
from PIL import Image

rawbytes = b'_\x00`\x00[\x00^\x00`\x00`\x00\\\x00\\\x00Z\x00\\\x00_\x00[\x00\\\x00\\\x00`\x00]\x00\\\x00^\x00_\x00\\\x00\\\x00]\x00]\x00_\x00]\x00]\x00Z\x00\\\x00^\x00\\\x00Z\x00^\x00_\x00]\x00^\x00Z\x00\\\x00Z\x00\\\x00]\x00_\x00]\x00^\x00Z\x00[\x00[\x00X\x00]\x00]\x00Z\x00'
im = Image.frombuffer("I;16", (5, 10), rawbytes, "raw", "I;12")
im.show()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32208612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档