所以我在我的游戏中实现了以下截图功能,只是为了记录进度和类似的东西。这是我的代码:
pygame.image.save(screen, save_file)
非常基本。我最近升级到python 3.3,并且因此使用此功能遇到了扭曲颜色的问题。这就是我的意思:
颜色扭曲:
所以它看起来很不错,但它不应该如何。这是实际图片:
这是一个已知问题还是只是我?是否有任何修复或目前它只是一个破碎的功能。我正在使用pygame 1.9.2pre,我假设它只是预发布的一个错误,但我在使用python 3.3的任何其他版本的pygame时遇到了问题。
答案 0 :(得分:3)
Some users报告称将图像保存为pngs有困难:
即使我指定.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")
答案 1 :(得分:0)
供以后参考,该技巧对我有用:
from PIL import Image
imgdata = pygame.surfarray.array3d(screen).transpose([1,0,2])[:,:,::-1]
Image.fromarray(imgdata).save('output.png')