Почему изображение повернуто по диагонали?

Недавно я попытался использовать ImageGrab и воспроизвести экран. Но когда я написал следующий код и запустил его после рисования, изображение было повернуто по диагонали. Кто-нибудь знает, почему это происходит? Проблема с ImageGrab, pygame или чем-то еще?

Это мой код до сих пор:

      from PIL import ImageGrab
import pyautogui
import pygame

colors=[]
WIDTH,HEIGHT=pyautogui.size()
image=ImageGrab.grab()
for x in range(0,WIDTH,5):
    for y in range(0,HEIGHT,5):
        color=image.getpixel((x,y))
        colors.append(color)
screen=pygame.display.set_mode((WIDTH,HEIGHT))
pixel_y=-5
pixel_x=0
for k,v in enumerate(colors):
    pixel_y+=5
    if pixel_y>HEIGHT:
        pixel_x+=5
        pixel_y=0
    pixel=pygame.Rect(pixel_x,pixel_y,5,5)
    pygame.draw.rect(screen,v,pixel)
    pygame.display.update(pixel)

1 ответ

Вы рисуете слишком много пикселей в одном столбце. Изменять:

if pixel_y>HEIGHT:

      if pixel_y >= HEIGHT:

Упростите свой код с помощью //(этажное деление) оператор и (по модулю) оператор (оператор %оператор вычисляет остаток от целочисленного деления):

      h = HEIGHT // 5
for k, v in enumerate(colors):
    pixel = pygame.Rect(k // h * 5, k % h * 5, 5, 5)
    pygame.draw.rect(screen, v, pixel)
    pygame.display.update(pixel)
Другие вопросы по тегам