Python PIL Image.tostring()

aho*_*fer 4 python pyopengl python-imaging-library

我是Python和PIL的新手.我试图关注如何通过PIL将图像加载到Python,然后使用openGL绘制其像素的代码示例.以下是一些代码行:

from Image import *
im = open("gloves200.bmp") 
pBits = im.convert('RGBA').tostring()
Run Code Online (Sandbox Code Playgroud)

.....

glDrawPixels(200, 200, GL_RGBA, GL_UNSIGNED_BYTE, pBits)
Run Code Online (Sandbox Code Playgroud)

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

屏幕截图

Ery*_*Sun 9

我觉得你很亲密 尝试:

pBits = im.convert("RGBA").tostring("raw", "RGBA")
Run Code Online (Sandbox Code Playgroud)

首先必须将图像转换为RGBA模式,以便RGBA原始模式打包器可用(请参阅libimaging中的Pack.c).您可以检查len(pBits) == im.size[0]*im.size[1]*4手套200图像的200x200x4 = 160,000字节.