|
|
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 :
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 = pil_image.transform((250,250),Image.QUAD,(0-w,-w,0-w,250+w,250+z,250+z,250+z,-z) ,Image.BICUBIC) 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)