Работа с изображениями

Загрузка

Для того чтобы использовать картинки в вашей программе вам надо сделать следующее:

  1. Загрузить/найти нужный файл в формате png
  2. Положить его в ту же папку где находится файл с кодом вашей программы (.py)
  3. В программе написать следующую строчку
    image = pygame.image.load('file.png').convert_alpha()
    

image будет переменной с нашим изображением.

Как и любую переменную, картинку нужно загружать перед игровым циклом (while running:). Если вы используете несколько картинок, даже для одного предмета (например разные направления) загружайте их все один раз в начале программы и используйте в зависимости от ситуации.

Вывод на экран

screen.blit(image, (x, y))

Изображение нарисуется левым верхним углом в точке (x, y).

Изменение размера

Часто оказывается что картинка которую мы загрузили имеет большое разрешение, а значит и размер на экране. Вместо того чтобы исправлять это вручную в графическом редакторе используйте

new_image = pygame.transform.scale(image, (width, height))

new_image будет вашей картинкой измененной до размеров width и height.

Поворот

new_image = pygame.transform.rotate(image, angle)

повернет изображение image на angle градусов.

Внимание

Нельзя поворачивать уже повернутую картинку. Это связанно с тем что повернутое изображение занимает больший прямоуглоьник чем старое, а значит его поворот будет искажаться. Нельзя вместо

image = pygame.transform.rotate(image, 5)

написать

image = pygame.transform.rotate(image, 1)
image = pygame.transform.rotate(image, 1)
image = pygame.transform.rotate(image, 1)
image = pygame.transform.rotate(image, 1)
image = pygame.transform.rotate(image, 1)

Аналогично, если вы хотите чтобы картинка поворачивалась на 1 градус каждый кадр, нельзя писать

while running:
        ...
        image = pygame.transform.rotate(image, 1)

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

angle = 0
while running:
        ...
        angle = angle + 1
        rotated_image = pygame.transform.rotate(image, angle)

Пример

results matching ""

    No results matching ""