Python PIL Image.tostring()

2023-12-27

我是 Python 和 PIL 新手。我正在尝试遵循代码示例,了解如何通过 PIL 将图像加载到 Python,然后使用 openGL 绘制其像素。下面是一些代码行:

from Image import *
im = open("gloves200.bmp") 
pBits = im.convert('RGBA').tostring()

.....

glDrawPixels(200, 200, GL_RGBA, GL_UNSIGNED_BYTE, pBits)

这将在画布上绘制 200 x 200 的像素块。然而,它不是预期的图像——它看起来像是从随机存储器中绘制像素。即使我尝试绘制完全不同的图像,我也会得到相同的图案,这一事实支持了随机记忆假设。有人可以帮助我吗?我在 Windows XP 上使用 Python 2.7 以及 2.7 版本的 pyopenGL 和 PIL。


我想你很接近。尝试:

pBits = im.convert("RGBA").tostring("raw", "RGBA")

图像首先必须转换为 RGBA 模式,以便 RGBA rawmode 打包程序可用(请参阅Pack.c https://bitbucket.org/effbot/pil-117/src/7493ffdf4aff/libImaging/Pack.c#cl-459在libimaging中)。你可以检查一下len(pBits) == im.size[0]*im.size[1]*4,这对于您的 glove200 图像来说是 200x200x4 = 160,000 字节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python PIL Image.tostring() 的相关文章

随机推荐