#!/usr/bin/env python import os, pygame from pygame.locals import * import Image import StringIO import time class Cover: def __init__(self, pos): self.image = pygame.Surface((125,125)) #self.origineimage = image self.cover_url = os.path.join('covers/cover'+str(pos)+'.jpg') #print self.cover_url self.pil_image = Image.open(self.cover_url) #print self.pil_image self.speed = 5 self.pos = self.image.get_rect().move((800 / 6) * (pos - 1 ), 50) #self.oldpos = self.pos #self.oldpos.left = self.pos.left - 999 #print self.pos self.perspectiv(00,00) def move(self): self.pos = self.pos.move(self.speed, 0) if (self.pos.right > 800): self.pos.left = 0 #if (abs(self.pos.left-self.oldpos.left)) > 25: # self.oldpos = self.pos if (self.pos.left + 77)<400: leftangle = 0 rightangle = (400 - (self.pos.left + 77)) / 2 else: leftangle = ((self.pos.left+77) - 400 ) / 2 rightangle = 0 self.perspectiv(rightangle,leftangle) def perspectiv(self,z,w): #pil_string_image = pygame.image.tostring(self.origineimage, "RGBA",False) #pil_string_image = self.image.tostring() #pil_image = Image.fromstring("RGBA",(250,250),pil_string_image) #pil_image = Image.open(self.cover_url) perspectiv_pil_image = self.pil_image.transform((125,125),Image.QUAD,(0-w,-w,0-w,125+w,125+z,125+z,125+z,-z)) #mode = pil_image.mode #size = pil_image.size #data = pil_image.tostring() #assert mode in "RGB", "RGBA" #self.image = pygame.image.fromstring(data, size, mode) f = StringIO.StringIO() perspectiv_pil_image.save(f, "bmp") f.seek(0) self.image = pygame.image.load(f) f.close() #quick function to load an image def load_image(name): path = os.path.join('covers', name) return pygame.image.load(path).convert() #here's the full code def main(): pygame.init() screen = pygame.display.set_mode((800, 480)) #coverimg1 = load_image('cover1.jpg') #coverimg2 = load_image('cover2.jpg') #coverimg3 = load_image('cover3.jpg') #coverimg4 = load_image('cover4.jpg') #coverimg5 = load_image('cover5.jpg') #background = load_image('background.png') background = pygame.Surface((800,480)) #Display Background screen.blit(background, (0, 0)) #Define covers objects = [] o = Cover(1) objects.append(o) o = Cover(2) objects.append(o) o = Cover(3) objects.append(o) o = Cover(4) objects.append(o) o = Cover(5) objects.append(o) while 1: for event in pygame.event.get(): if event.type in (QUIT, KEYDOWN): return for o in objects: screen.blit(background, o.pos, o.pos) for o in objects: o.move() screen.blit(o.image, o.pos) pygame.display.update() if __name__ == '__main__': main()