#!/usr/bin/env python
import sys, time
import pygame
def main(imagefile, convert_alpha=False, run_speed_test=False):
"""show an interactive image scaler
arguemnts:
imagefile - name of source image (required)
convert_alpha - use convert_alpha() on the surf (default False)
run_speed_test - (default False)
"""
bSpeedTest = run_speed_test
# initialize display
pygame.display.init()
# load background image
background = pygame.image.load(imagefile)
if convert_alpha:
screen = pygame.display.set_mode((1024, 768), pygame.FULLSCREEN)
background = background.convert_alpha()
if bSpeedTest:
SpeedTest(background)
return
screen = pygame.display.set_mode((1024, 768), pygame.FULLSCREEN)
# start fullscreen mode
# turn off the mouse pointer
pygame.mouse.set_visible(0)
# main loop
bRunning = True
bUp = False
bDown = False
bLeft = False
bRight = False
cursize = [background.get_width(), background.get_height()]
while(bRunning):
image = pygame.transform.smoothscale(background, cursize)
imgpos = image.get_rect(centerx=512, centery=384)
screen.fill((255,255,255))
screen.blit(image, imgpos)
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
bRunning = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP: bUp = True
if event.key == pygame.K_DOWN: bDown = True
if event.key == pygame.K_LEFT: bLeft = True
if event.key == pygame.K_RIGHT: bRight = True
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP: bUp = False
if event.key == pygame.K_DOWN: bDown = False
if event.key == pygame.K_LEFT: bLeft = False
if event.key == pygame.K_RIGHT: bRight = False
if bUp:
cursize[1] -= 2
if cursize[1] < 1: cursize[1] = 1
if bDown:
cursize[1] += 2
if bLeft:
cursize[0] -= 2
if cursize[0] < 1: cursize[0] = 1
if bRight:
cursize[0] += 2
def SpeedTest(image):
print ("Smoothscale Speed Test - Image Size %s\n" % str(image.get_size()))
imgsize = [image.get_width(), image.get_height()]
duration = 0.0
for i in range(128):
shrinkx = (imgsize[0] * i) / 128
shrinky = (imgsize[1] * i) / 128
start = time.time()
tempimg = pygame.transform.smoothscale(image, (shrinkx, shrinky))
duration += (time.time() - start)
del tempimg
print ("Average smooth shrink time: %i milliseconds." % int((duration / 128) * 1000))
duration = 0
for i in range(128):
expandx = (imgsize[0] * (i + 129)) / 128
expandy = (imgsize[1] * (i + 129)) / 128
start = time.time()
tempimg = pygame.transform.smoothscale(image, (expandx, expandy))
duration += (time.time() - start)
del tempimg
print ("Average smooth expand time: %i milliseconds." % int((duration / 128) * 1000))
duration = 0.0
for i in range(128):
shrinkx = (imgsize[0] * i) / 128
shrinky = (imgsize[1] * i) / 128
start = time.time()
tempimg = pygame.transform.scale(image, (shrinkx, shrinky))
duration += (time.time() - start)
del tempimg
print ("Average jaggy shrink time: %i milliseconds." % int((duration / 128) * 1000))
duration = 0
for i in range(128):
expandx = (imgsize[0] * (i + 129)) / 128
expandy = (imgsize[1] * (i + 129)) / 128
start = time.time()
tempimg = pygame.transform.scale(image, (expandx, expandy))
duration += (time.time() - start)
del tempimg
print ("Average jaggy expand time: %i milliseconds." % int((duration / 128) * 1000))
if __name__ == '__main__':
# check input parameters
if len(sys.argv) < 2:
print ("Usage: %s ImageFile [-t] [-convert_alpha]" % sys.argv[0])
print (" [-t] = Run Speed Test\n")
print (" [-convert_alpha] = Use convert_alpha() on the surf.\n")
else:
main(sys.argv[1],
convert_alpha = '-convert_alpha' in sys.argv,
run_speed_test = '-t' in sys.argv)
|