2014-02-25 48 views
0
import pygame, sys 
from pygame.locals import * 

white=(255,255,255) 
black=(0,0,0) 
green=(0,255,0) 
pygame.init() 
window=pygame.display.set_mode((740, 450),0,32) 
image=pygame.image.load("Rogue.png") 
image.set_colorkey(white) 

x,y=0,0 
movex,movey=0,0 

while True: 
    window.fill(green) 
    for event in pygame.event.get(): 
     if event.type==QUIT: 
      pygame.quit() 
      sys.exit() 
     if event.type==KEYDOWN: 
      if event.key==K_LEFT: 
       movex+=-1 
      elif event.key==K_RIGHT: 
       movex+=1 
      elif event.key==K_UP: 
       movey+=-1 
      elif event.key==K_DOWN: 
       movey+=1 
    x=movex 
    y=movey 

    window.blit(image,(x,y)) 
    pygame.display.update() 

每次我跑我的性格有一個難看的白色光環式的諸如此類的事情代碼一個奇怪的白色像素化邊界回事... 如果你可以嘗試一下,告訴我什麼這是錯誤的將是恆星! :D 這是Png:http://imgur.com/h2yZGfm And screenshot:http://imgur.com/wUUC8a6我的精靈周圍有

+1

你可以加入一個截圖,以便我們看到手頭的問題嗎?也許可以上傳PNG,這樣我們就可以看到它應該是什麼樣子了。 – 2014-02-25 02:51:04

回答

0

這是一個常見問題。您圖片的透明部分是透明白色;也就是說,RGBA值接近(1,1,1,0)。不透明區域邊框上的像素部分透明,因此與透明白色混合。這就是爲什麼你會看到你精靈邊界的白色陰霾。

有兩種方法可以解決您的問題。

代碼之外

此問題在代碼之外更好地修復。在您使用的任何圖形工具中,您需要使圖像的部分透明部分使用與您的精靈的不透明像素相匹配的RGB值。根據工具的不同,可能會出於完全相同的目的而進行內置操作。

後處理你的精靈

對於你的精靈的每個像素(X,Y):

設(R,G,B,A)是你的像素的顏色。如果我會假設這些浮動在[0,1]範圍內。當前顏色(R,G,B)是錯誤的,因爲它已根據像素的阿爾法A與白色混合。也就是說,如果(R',G',B')是正確的顏色,你可以使用(R,G,B)= A *(1,1,1)+(1-A)*( R 'G',B')。

求解(R 'G',B ')你

(R',G 'B')=((R,G,B) - (A,A,A)) /(1-A)。

因此,您可以使用以下方法修復您的顏色成分。

R = (R - A)/(1 - A) 
G = (G - A)/(1 - A) 
B = (B - A)/(1 - A) 
+0

好的,謝謝你我會試着用Gimp編輯它。我不確定是否可以,但我會盡快回復 – Dominico909

+0

@ Dominico909使用顏色選擇器工具放大並單擊各個像素。這使您可以檢查RGBA值。 –

+0

@蒂莫西但是那我該怎麼做? – Dominico909