Hed*_*dge 5 python pygame python-imaging-library python-2.7
我正在使用PIL透视地转换屏幕的一部分.原始图像数据是pygame Surface,需要转换为PIL图像.
因此我找到了为此目的而存在的pygame的tostring函数.
然而,结果看起来很奇怪(参见附件截图).这段代码出了什么问题:
rImage = pygame.Surface((1024,768))
#draw something to the Surface
sprite = pygame.sprite.RenderPlain((playboard,))
sprite.draw(rImage)
pil_string_image = pygame.image.tostring(rImage, "RGBA",False)
pil_image = Image.fromstring("RGBA",(660,660),pil_string_image)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?

正如我在评论指出,pygame的文档
的pygame.image.fromstring(string, size, format, flipped=False)说:"大小和格式的图像必须计算的确切大小作为传递的字符串缓冲区相同.否则将引发异常".因此,使用(1024,768)代替(660,660),反之亦然 - 通常,两个调用的相同维度 - 更有可能起作用.(我说"更有可能工作"而不是"会工作",因为我没有测试任何案例.)
怀疑这样的问题的原因:部分图像的奇怪外观类似于显示屏幕,其被设置为不能同步的光栅速率; 即,图像的线条开始显示在左边缘以外的点; 在这种情况下,因为图像线长度比显示线长度长.我假设雪花是精灵,与扭曲的图像分开生成.
| 归档时间: |
|
| 查看次数: |
3561 次 |
| 最近记录: |