2016-09-16 29 views
1

パイゲーム表面にblittedされた画像のピクセルの色値を取得するにはどうすればよいですか? Surface.get_at()を使用すると、上に重ねて表示された画像ではなく、サーフェスレイヤの色だけが返されます。パイゲームの画像の個々のピクセルの色を取得

+0

コードのサンプルを入力してください – Flint

答えて

3

surface.get_atは問題ありません。 アルファチャンネルのない画像を合成する際の違いを示す例です。ここ

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() 

、赤色画素をクリックする与える:カラー0xRRGGBBAAですを期待しながら

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

画素アレイは、0xAARRGGBB色成分を返します。また、画面のアルファチャンネルは255です。

+0

+1素晴らしい答え!ちょうど2つのこと:あなたは 'surface.getAt'と' surface.get_at'を使用しています。混乱するかもしれません。次に、 'pygame.display.flip'関数で未定義の変数' e'を使用しています。私はそれが何であろうと思っているのか分からないし、変更する人数が少ないので自分で編集することはできない。 –

関連する問題