|
2007-09-19
, 11:47
|
|
Posts: 693 |
Thanked: 502 times |
Joined on Jul 2007
|
#2
|
|
2007-09-19
, 11:55
|
|
Posts: 1,012 |
Thanked: 817 times |
Joined on Jul 2007
@ France
|
#3
|
|
2007-09-19
, 14:25
|
|
Posts: 341 |
Thanked: 68 times |
Joined on Aug 2007
|
#4
|
|
2007-09-19
, 14:47
|
|
Posts: 1,012 |
Thanked: 817 times |
Joined on Jul 2007
@ France
|
#5
|
#!/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()
|
2007-09-19
, 15:59
|
|
Posts: 341 |
Thanked: 68 times |
Joined on Aug 2007
|
#6
|
|
2007-09-19
, 16:11
|
|
Posts: 1,012 |
Thanked: 817 times |
Joined on Jul 2007
@ France
|
#7
|
|
2007-09-19
, 16:22
|
|
Posts: 341 |
Thanked: 68 times |
Joined on Aug 2007
|
#8
|
|
2007-10-16
, 16:03
|
Posts: 178 |
Thanked: 40 times |
Joined on Aug 2007
@ UK
|
#9
|
|
2007-10-16
, 17:02
|
Posts: 1,038 |
Thanked: 737 times |
Joined on Nov 2005
@ Helsinki
|
#10
|
I'm trying to do a Apple's Coverflow like display, and so i'm trying to make perspective on an image.
I've successfully found how to do it, but it's really slow. For this i use pygame to display and load image and PIL to make perspective.
It's take at least one minute to calc 5 covers. I think most of the time is taken by the conversion of a pygame image to an pil image :