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

发布于 2024-07-20 06:20:30 字数 324 浏览 7 评论 0原文

我想将 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 呢?

i want to convert a Pyglet.AbstractImage object to an PIL image for further manipulation
here are my codes

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()

but the image shown went wrong.
so how to convert an image from pyglet to PIL properly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜心小果奶 2024-07-27 06:20:30

我想我找到了解决方案

Pyglet.AbstractImage 实例中的间距与 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

但新的间距是 -1383

I think I find the solution

the pitch in Pyglet.AbstractImage instance is not compatible with PIL
I found in pyglet 1.1 there is a codec function to encode the Pyglet image to PIL
here is the link to the source

so the code above should be modified to this

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()

I'm using a 461x288 image in this case and find that pic.pitch is -1384

but the new pitch is -1383

撩人痒 2024-07-27 06:20:30

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

与 PIL 图像之间的 AbstractImage。

This is an open wishlist item:

AbstractImage to/from PIL image.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文