获取pygame中图像的各个像素的颜色

时间:2016-09-16 19:11:53

标签: python image image-processing pygame

如何获得在pygame表面上嵌入图像的像素的颜色值?使用Surface.get_at()只返回表面层的颜色,而不是返回blit上的图像。

1 个答案:

答案 0 :(得分:3)

方法surface.get_at没问题。 下面是一个示例,显示在没有Alpha通道的情况下对图像进行blitting时的差异。

import sys, pygame
pygame.init()
size = width, height = 320, 240
screen = pygame.display.set_mode(size)
image = pygame.image.load("./img.bmp")
image_rect = image.get_rect()

screen.fill((0,0,0))
screen.blit(image, image_rect)
screensurf = pygame.display.get_surface()

while 1:

  for event in pygame.event.get():
     if event.type == pygame.MOUSEBUTTONDOWN :
        mouse = pygame.mouse.get_pos()
        pxarray = pygame.PixelArray(screensurf)
        pixel = pygame.Color(pxarray[mouse[0],mouse[1]])
        print pixel
        print screensurf.get_at(mouse)

  pygame.display.flip()

在此处,单击红色像素将显示:

(0, 254, 0, 0)
(254, 0, 0, 255)

PixelArray返回0xAARRGGBB颜色分量,而Color期望0xRRGGBBAA。另请注意屏幕表面的Alpha通道为255。