[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[pygame] How do I make a image transparent?



See I got this png file w/ a white BG :( is it possible to make the white in the BG of the image transparent?

Attachment: player.png
Description: PNG image

import pygame,sys,string
from pygame.locals import *
class Block(pygame.sprite.Sprite):
	def __init__(self):
		pygame.sprite.Sprite.__init__(self)
class SpriteSheet:
	def __init__(self,image):
		self.sprite = pygame.image.load(image).convert()
		self.rect = ''
		self.imag = ''
	def slice(self,rect):
		rect = Rect(rect)
		img = pygame.Surface(rect.size).convert()
		img.set_alpha(40)
		img.blit(self.sprite,(0,0),rect)
		self.rect = rect
		self.imag = img
class map_(object):
	def __init__(self,block=100,wndow=(300,300)):
		self.BLOCK = block
		self.size = wndow
		self.window = pygame.display.set_mode(self.size)
		self.blocks = []
		self.map = []
		pygame.init()
	def hex_converter(self,hexcolorcode):
		hexcolorcode = hexcolorcode[1:]
		red = hexcolorcode[0:2]
		red = int(red,16)
		blue = hexcolorcode[2:4]
		blue = int(blue,16)
		green = hexcolorcode[4:6]
		green = int(green,16)
		return (red,green,blue)
	def create_box(self,size,color,rect):
		box = Block()
		box.image = pygame.Surface((size))
		pygame.draw.rect(box.image,color,box.image.get_rect())
		box.color = color
		box.point = rect
		self.blocks.append(box)
	def load_text_map(self,map):
		file = open(map,"r")
		links = file.readlines()
		file.close()
		x = 0
		total = len(links)
		k = 0
		while k<total:
			self.map.append([])
			k += 1
		for i in links:
			i = string.replace(i,"\n","")
			i = i.split(",")
			for e in i:
				self.map[x].append(e)
			x += 1
	def render_map(self,aray,dict):
		x=0
		for e in aray:	
			z = 0
			for y in e:
				aray[x][z] = dict[int(y)]
				z += 1
			x += 1
		return aray
	def main(self):
		z = 0
		x = 0
		y = 0
		m = 0
		while z < len(self.map):
			q = 0
			while q < len(self.map[z]):
				self.create_box(self.map[z][q][0],self.map[z][q][1],(x,y))
				x += self.BLOCK
				q += 1
			x = 0
			y += self.BLOCK
			z += 1
		self.draw_box()
	def draw_box(self):
		while True:
			for event in pygame.event.get():
				if event.type == pygame.QUIT: sys.exit()
			e = 0
			while e < len(self.blocks):
				self.window.blit(self.blocks[e].image,self.blocks[e].point)
				e += 1
			guner = SpriteSheet("player.png")
			guner.slice((0,0,40,57))
			self.window.blit(guner.imag,(400,400))
			pygame.display.update()
Map = map_(25,(700,600))
tiles = {1 : [(25,25),Map.hex_converter("#E0ECFF")], 2 : [(25,25),Map.hex_converter("#B5EDBC")], 3 : [(25,25),Map.hex_converter("#F3E807")] }
Map.load_text_map("map1.map")
Map.render_map(Map.map,tiles)
Map.main()