我试图使用pygame拍摄截图,但它会交换绿色和红色。(仅当我使用png时)有没有人知道如何在没有PIL的情况下解决这个问题? 我特别需要该文件为.png。
答案 0 :(得分:1)
你可以使用surfarray类,3个维度是红色#green / blue,所以这样的东西应该有效:
img = pygame.surfarray.array3d(*your image here*)
img_copy = pygame.surfarray.array3d(*your image name here*)
for y in range(0, *image height*):
for x in range(0, *img width*):
img_copy[x][y][0] = img[x][y][1]
img_copy[x][y][1] = img[x][y][0]
然后你可以这样做:
surf = pygame.surfarray.make_surface(img_copy)
答案 1 :(得分:0)
pg导出似乎是pygame中的一个错误, 如此链接中所述: http://www.mzan.com/article/19296253-pygame-image-save-colors-distorted.shtml
所以,如果你绝对需要PNG,你可以用这种方式使用PIL(即使它是PIL,你将有一个PNG文件;)
首先,导出到BPM,然后执行:
from PIL import
Image im = Image.open("screenshot.bmp")
im.save("screenshot.png")
你不能避免使用第三方库,因为它是一个pygame bug:s