为什么图像对角线旋转?
Why is image rotated diagonally?
最近我尝试使用 ImageGrab 并复制 screen.But 当我编写以下代码并在绘制图像对角旋转后运行它。有谁知道为什么会这样?是 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)
您在一列中绘制的像素过多。变化:
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)
最近我尝试使用 ImageGrab 并复制 screen.But 当我编写以下代码并在绘制图像对角旋转后运行它。有谁知道为什么会这样?是 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)
您在一列中绘制的像素过多。变化:
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)