我对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和pyopenGL和PIL的2.7版本。
我觉得你很亲近。尝试:
为了使RGBA rawmode打包程序可用,首先必须将图像转换为RGBA模式(请参见libimaging中的Pack.c)。您可以检查
len(pBits) == im.size[0]*im.size[1]*4
,对于gloves200图像,它是200x200x4=160000字节。谢谢你的帮助。感谢mikebabcock更新了Web上的示例代码。感谢eryksun提供的代码片段——我在代码中使用了它。
我确实发现了我的错误,那是Python newb的错误。哎哟。我在模块中的任何函数的作用域之外声明了一些变量,并且天真地认为我是在函数中修改它们的值。当然,这不起作用,所以我的glDrawPixels调用实际上是在绘制随机内存。
你试过直接在tostring函数中使用转换吗?
或者使用兼容版本:
相关问题 更多 >
编程相关推荐