2017-08-13 387 views
1

我最近在python中问了一个关于blitting和使用set_colorkey特性的问题。我给出的答案改变set_colorkey不会取出背景颜色(python)

hg = pygame.image.load('hgfinalredbg.jpg').set_colorkey(red) 

hg = pygame.image.load('hgfinalredbg.jpg') 
hg.set_colorkey(red) 

然而,当我运行我的程序中,hgfinalredbg.jpg的红色背景不会消失。难道我做错了什么?我确定我的程序的红色定义和图片背景都是(255,0,0)。另外,让我知道你是否需要更多的代码来帮助你。 下面是一些代码:

import pygame 
pygame.init() 
white = (255,255,255) 
WINDOWHEIGHT = 720 
WINDOWWIDTH = 1280 
windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32) 
windowSurface.fill(white) 
pygame.display.update() 
red = (255,0,0) 
hgbox = pygame.Rect(0 ,13 ,36 ,72) 
hg = pygame.image.load('hgfinalredbg.jpg') 
hg.set_colorkey(red) 
windowSurface.blit(hg, hgbox) 
pygame.display.update() 

Here is the picture.

这里是hgfinalredbg.jpg

+0

请向我们展示更多[完整的代码示例](https://stackoverflow.com/help/mcve),也许图像也会有所帮助。尝试调用加载的图像/表面的['convert'](http://www.pygame.org/docs/ref/surface.html#pygame.Surface.convert)方法:'hg = pygame.image.load ( 'hgfinalredbg.jpg')。将()'。 – skrx

+0

我已经尝试过'convert'方法。我会更新我的问题给你更多的代码。 – Maximosaur

+0

请发布图片以及。 – skrx

回答

2

问题是,图像中的红色大多数值为(254, 0, 0)而不是(255, 0, 0),因此更好地清理图像并将其保存为.png,因为png是无损格式,并且问题可能来自压缩.jpg文件。

+0

真的吗?我在Photoshop中制作了它,并选择了'(255,0,0)'作为我的红色。我的图像中是否有以'(255,0,0)'作为背景色的部分? – Maximosaur

+0

jpg文件的压缩可能会导致问题。 – skrx

+0

你觉得我可以避免这种情况? – Maximosaur