1.用python自带方法处理,只是把图片背景色变成底层surface同样的颜色,图片本身无变化
# ~ 如果位图是纯色背景就用convert和set_colorkey方法
# ~ 其中set_colorkey的RGB值就是图片的背景色,可以用微软画图的吸管吸取颜色值
self.image=pygame.image.load('chess.png').convert()
self.image.set_colorkey((153,217,234))
# ~ 如果位图是透明背景
# ~ self.image = pygame.image.load("chess.png").convert_alpha()
2.处理图片本身使其变成透明的
前提:需要导入python标准库,Python Image Library,在python3.7以后叫做pillow。命令行打开之后,如果python已经在系统变量里的话,直接pip install pillow,linux unix mac方法类似。
实际代码如下:
1 import PIL.Image as Image 2 3 def transparent_back(img): 4 """以图片左上角的点的颜色为透明背景""" 5 img = img.convert('RGBA') 6 L, H = img.size 7 color_0 = img.getpixel((0,0)) 8 for h in range(H): 9 for l in range(L): 10 dot = (l,h) 11 color_1 = img.getpixel(dot) 12 if color_1 == color_0: 13 color_1 = color_1[:-1] + (0,) 14 img.putpixel(dot,color_1) 15 return img 16 17 18 img=Image.open('player.png') 19 img=us.transparent_back(img) 20 #~ 如果不想覆盖原图就改名 21 img.save('player.png')