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

Re: [pygame] Cycling images



to load an image, I use this function: (this function load the image with alpha channel)

def load_image(name, colorkey=None):
#fullname = os.path.join('data', name)
try:
image = pygame.image.load(name)
except pygame.error, message:
print 'Cannot load image:', name
raise SystemExit, message
# Para ver si la imagen soporta canal alpha
if image.get_alpha() is None:
print name
print "NO apha"
image = image.convert()
else:
print name
print "APLHA"
image = image.convert_alpha()
# ######################################
if colorkey is not None:
#print "no none"
if colorkey is -1:
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()

but in this function the image lost the alpha channel:

def animstrip(img, width=0, colorkey=None):
if not width:
width = img.get_height()
size = width, img.get_height()
images = []
for x in range(0, img.get_width(), width):
if img.get_alpha() is not None:
i = pygame.Surface(size).convert_alpha()
else:
i = pygame.Surface(size).convert()
i.blit(img, (0, 0), ((x, 0), size))
# si se seteo colorkey toma ese color como transparente
if colorkey is not None:
if colorkey is -1:
# toma el color del pixel a la posicion (0,0)
colorkey = i.get_at((0,0))
i.set_colorkey(colorkey, RLEACCEL)
images.append(i)
#print images
return images



What you want to do is check the source img, and then conditionally create your new surface with or without an alpha channel. Do the creation in one step:

if img.get_alpha:
i = Surface(size).convert_alpha()
else:
i = Surface(size).convert()

i.blit(yada yada)

Regards,
Steve