如何将Pyglet图像转换为PIL图像?

2 投票
2 回答
2081 浏览
提问于 2025-04-15 11:46

我想把一个Pyglet.AbstractImage对象转换成PIL图像,以便进行进一步处理。以下是我的代码:

from pyglet import image
from PIL import Image
pic = image.load('pic.jpg')
data = pic.get_data('RGB', pic.pitch)
im = Image.fromstring('RGB', (pic.width, pic.height), data)
im.show()

但是显示的图像出现了问题。那么,如何才能正确地把图像从Pyglet转换成PIL呢?

2 个回答

0

这是一个公开的愿望清单项目:

希望能把AbstractImage和PIL图像之间进行转换。

2

我想我找到了问题的解决办法

Pyglet.AbstractImage 实例中的 pitch(音高)和 PIL 不兼容。我发现 Pyglet 1.1 里有一个编码功能,可以把 Pyglet 的图像转换成 PIL 格式。这里有一个 链接,可以查看源代码。

所以上面的代码应该修改成这样:

from pyglet import image
from PIL import Image
pic = image.load('pic.jpg')
pitch = -(pic.width * len('RGB'))
data = pic.get_data('RGB', pitch) # using the new pitch
im = Image.fromstring('RGB', (pic.width, pic.height), data)
im.show()

在这个例子中,我使用的是一个 461x288 的图像,发现 pic.pitch 是 -1384。

但是新的 pitch 是 -1383。

撰写回答