Как удалить цвет фона в Pygame (make_surface)? - PullRequest
0 голосов
/ 05 мая 2020

Я использовал opencv для чтения файлов png (без фона) и преобразования их в поверхность pygame. Вот два примера того, как я это сделал:

Метод 1:

character=pygame.image.load("character.png")

Метод 2:

CharacterImage=cv2.imread("character.png")
CharacterImage=convertToRGB(CharacterImage,CharSize,CharSize)
#charSize is desired character size (for example: 50)
#I have created a user defined function as pygame renders in RGB whereas cv2 renders in BGR image format.
CharacterActions.append(rotate(pygame.surfarray.make_surface(CharacterImage),charrot))
#charrot is rotation angle

Я понимаю, что могу вручную изменять размер изображений и затем используйте первый метод, чтобы получить прозрачное фоновое изображение. Но я хочу понять, можно ли получить то же самое вторым методом? Я не хочу вручную редактировать так много изображений, меняя их размер, и поэтому я хочу знать, есть ли способ сделать то же самое.

Заранее спасибо

1 Ответ

1 голос
/ 06 мая 2020

На изображениях, которые вы загружаете с помощью метода 1 (pygame.image.load()), вы должны использовать pygame.transform.scale() и pygame.transform.rotate() для управления загруженным изображением. Чтобы сохранить прозрачность, вам нужно сохранить альпу загружаемого изображения. Для этого вам нужно использовать .convert_alpha () на получившемся изображении. Вы можете сделать это после или до преобразования.

Для каждой из этих команд, которые я связал с документацией, просто щелкните по ним, чтобы вы могли прочитать его.

...