123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- #!/usr/bin/env python
- import os, pygame
- from pygame.compat import xrange_
- main_dir = os.path.split(os.path.abspath(__file__))[0]
- data_dir = os.path.join(main_dir, 'data')
- def show (image):
- screen = pygame.display.get_surface()
- screen.fill ((255, 255, 255))
- screen.blit (image, (0, 0))
- pygame.display.flip ()
- while 1:
- event = pygame.event.wait ()
- if event.type == pygame.QUIT:
- raise SystemExit
- if event.type == pygame.MOUSEBUTTONDOWN:
- break
- def main():
- pygame.init ()
- pygame.display.set_mode ((255, 255))
- surface = pygame.Surface ((255, 255))
- pygame.display.flip ()
- # Create the PixelArray.
- ar = pygame.PixelArray (surface)
- r, g, b = 0, 0, 0
- # Do some easy gradient effect.
- for y in xrange_ (255):
- r, g, b = y, y, y
- ar[:,y] = (r, g, b)
- del ar
- show (surface)
- # We have made some gradient effect, now flip it.
- ar = pygame.PixelArray (surface)
- ar[:] = ar[:,::-1]
- del ar
- show (surface)
- # Every second column will be made blue
- ar = pygame.PixelArray (surface)
- ar[::2] = (0, 0, 255)
- del ar
- show (surface)
- # Every second row will be made green
- ar = pygame.PixelArray (surface)
- ar[:,::2] = (0, 255, 0)
- del ar
- show (surface)
- # Manipulate the image. Flip it around the y axis.
- surface = pygame.image.load (os.path.join (data_dir, 'arraydemo.bmp'))
- ar = pygame.PixelArray (surface)
- ar[:] = ar[:,::-1]
- del ar
- show (surface)
- # Flip the image around the x axis.
- ar = pygame.PixelArray (surface)
- ar[:] = ar[::-1,:]
- del ar
- show (surface)
- # Every second column will be made white.
- ar = pygame.PixelArray (surface)
- ar[::2] = (255, 255, 255)
- del ar
- show (surface)
- # Flip the image around both axes, restoring it's original layout.
- ar = pygame.PixelArray (surface)
- ar[:] = ar[::-1,::-1]
- del ar
- show (surface)
- # Rotate 90 degrees clockwise.
- w, h = surface.get_size ()
- surface2 = pygame.Surface ((h, w), surface.get_flags (), surface)
- ar = pygame.PixelArray (surface)
- ar2 = pygame.PixelArray (surface2)
- ar2[...] = ar.transpose ()[::-1,:]
- del ar, ar2
- show (surface2)
-
- # Scale it by throwing each second pixel away.
- surface = pygame.image.load (os.path.join (data_dir, 'arraydemo.bmp'))
- ar = pygame.PixelArray (surface)
- sf2 = ar[::2,::2].make_surface ()
- del ar
- show (sf2)
- # Replace anything looking like the blue color from the text.
- ar = pygame.PixelArray (surface)
- ar.replace ((60, 60, 255), (0, 255, 0), 0.06)
- del ar
- show (surface)
- # Extract anything which might be somewhat black.
- surface = pygame.image.load (os.path.join (data_dir, 'arraydemo.bmp'))
- ar = pygame.PixelArray (surface)
- ar2 = ar.extract ((0, 0, 0), 0.07)
- sf2 = ar2.surface
- del ar, ar2
- show (sf2)
- # Compare two images.
- surface = pygame.image.load (os.path.join (data_dir, 'alien1.gif'))
- surface2 = pygame.image.load (os.path.join (data_dir, 'alien2.gif'))
- ar1 = pygame.PixelArray (surface)
- ar2 = pygame.PixelArray (surface2)
- ar3 = ar1.compare (ar2, 0.07)
- sf3 = ar3.surface
- del ar1, ar2, ar3
- show (sf3)
- if __name__ == '__main__':
- main()
|