123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- #!/usr/bin/env python
- import sys, time
- import pygame
- def main(imagefile, convert_alpha=False, run_speed_test=False):
- """show an interactive image scaler
- Args:
- imagefile - name of source image (required)
- convert_alpha - use convert_alpha() on the surf (default False)
- run_speed_test - (default False)
- """
- # initialize display
- pygame.display.init()
- # load background image
- background = pygame.image.load(imagefile)
- if run_speed_test:
- if convert_alpha:
- # convert_alpha() requires the display mode to be set
- pygame.display.set_mode((1, 1))
- background = background.convert_alpha()
- SpeedTest(background)
- return
- # start fullscreen mode
- screen = pygame.display.set_mode((1024, 768), pygame.FULLSCREEN)
- if convert_alpha:
- background = background.convert_alpha()
- # 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("\nImage Scaling 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 transform.smoothscale shrink time: %.4f ms." % (
- 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 transform.smoothscale expand time: %.4f ms." % (
- 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 transform.scale shrink time: %.4f ms." % (
- 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 transform.scale expand time: %.4f ms." % (
- duration / 128 * 1000))
- if __name__ == '__main__':
- # check input parameters
- if len(sys.argv) < 2:
- print("\nUsage: %s imagefile [-t] [-convert_alpha]" % sys.argv[0])
- print(" imagefile image filename (required)")
- print(" -t run speed test")
- print(" -convert_alpha use convert_alpha() on the image's "
- "surface\n")
- else:
- main(sys.argv[1],
- convert_alpha = '-convert_alpha' in sys.argv,
- run_speed_test = '-t' in sys.argv)
|