2013-10-10 153 views
1

所以我已经在我的游戏中实现了以下屏幕截图功能,只是为了记录进度和类似的东西。这是我的代码:PyGame图像保存颜色失真

pygame.image.save(screen, save_file) 

很基本。我最近升级到了Python 3.3,并且使用这个函数一直存在扭曲颜色的问题。这里是我的意思是:

颜色失真: Distorted screen shot

因此,它看起来相当不错,但不是它如何应该是。这是实际的图像:

Actual Image

这是一个已知的问题或只是我吗?是否有任何修复或目前只是一个破碎的功能。我正在使用pygame 1.9.2pre,我假设它只是一个预发布的错误,但我使用任何其他版本的pygame与python 3.3的问题。

+0

扭曲的图像是相当冷静,我倒是保持。 –

+0

我同意哈哈。不知怎的,这会对实际游戏产生影响,或者为其他类型的屏幕截图复制它,但这不是我想要的一般屏幕截图^ _^ – ReallyGoodPie

+1

它看起来像您的红色和绿色通道交换了,虽然我不知道为什么。作为最后的手段,您可以保存失真的图像,重新切换通道,您将获得实际的图像数据。当然,最好先不要弄乱数据。 – Kevin

回答

3

Some users报道困难保存图像为PNG格式:

我只得到,当我指定巴纽.TGA文件甚至。非常令人沮丧。

如果使用.PNG(大写),它将导致无效的文件(至少在我的win32上)。改为使用.png(小写)。

PNG似乎无法正常工作,我可以在Thunar中预览它,但在其他地方它说它不是一个有效的PNG。

以另一种格式保存可能会有帮助。例如,BMP是一种简单的格式,所以Pygame的实现不太可能会出错。

如果您确实想要另存为PNG,您可以通过将红色通道替换为绿色通道来扭转失真。这很简单。例如,使用PIL:

from PIL import Image 
im = Image.open("screenshot.png") 
width, height = im.size 

pix = im.load() 
for i in range(width): 
    for j in range(height): 
     r,g,b = pix[i,j] 
     pix[i,j] = (g,r,b) 

im.save("output.png") 

或者你也可以保存为BMP和转换成PNG事后:

from PIL import Image 
im = Image.open("screenshot.bmp") 
im.save("screenshot.png")