Pygame 更改图像颜色但保持透明度
Pygame change image colour but preserve transparency
我有一个函数可以拍摄图像并按给定的量调整所有 RGB 值:
def colour(self,img,col):
img = self.my_image.copy()
col = (col[0],col[1],col[2],0)
img.fill(col, None, pygame.BLEND_RGBA_ADD)
return img
我想将其应用于部分透明的图像。但是当我将其应用于图像时,透明像素会变成彩色。我希望这些像素保持透明,但任何不透明像素都可以正常着色。有什么办法可以做到这一点,而不必遍历每个像素并在调整之前检查每个像素是否透明?谢谢
fill
treats the color to be solid. You have to use blit
。
创建一个与源图像大小相同的透明图像,并用颜色填充它。最后,混合两个图像:
def colour(self, img, col):
img = self.my_image.copy()
color_img = pygame.Surface(img.get_size(), pygame.SRCALPHA)
color_img.fill((col[0], col[1], col[2], 0))
img.blit(color_img, (0, 0), special_flags = pygame.BLEND_RGBA_ADD)
return img
另见
我有一个函数可以拍摄图像并按给定的量调整所有 RGB 值:
def colour(self,img,col):
img = self.my_image.copy()
col = (col[0],col[1],col[2],0)
img.fill(col, None, pygame.BLEND_RGBA_ADD)
return img
我想将其应用于部分透明的图像。但是当我将其应用于图像时,透明像素会变成彩色。我希望这些像素保持透明,但任何不透明像素都可以正常着色。有什么办法可以做到这一点,而不必遍历每个像素并在调整之前检查每个像素是否透明?谢谢
fill
treats the color to be solid. You have to use blit
。
创建一个与源图像大小相同的透明图像,并用颜色填充它。最后,混合两个图像:
def colour(self, img, col):
img = self.my_image.copy()
color_img = pygame.Surface(img.get_size(), pygame.SRCALPHA)
color_img.fill((col[0], col[1], col[2], 0))
img.blit(color_img, (0, 0), special_flags = pygame.BLEND_RGBA_ADD)
return img
另见