Почему изображение повернуто по диагонали?
Недавно я попытался использовать 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)