# Demo: blitting of images in memory with SDL2 in Raspian-Stretch
from os import listdir
import sys
import time
from sdl2 import *
# Initialize SDL2
SDL_Init(SDL_INIT_VIDEO)
try:
# create fullscreen display
win = SDL_CreateWindow(b"Fast Blitting", 0,0,0,0, SDL_WINDOW_FULLSCREEN)
screen = SDL_GetWindowSurface(win)
# load all image files (BMP) in folder 'images' into surfaces in RAM
images = []
folder = 'fotos'
files = listdir(folder)
for f in files:
img = SDL_LoadBMP((folder+'/'+f).encode())
images.append(img)
# blit 100 images
cnt = len(images)
t_start = time.time()
for i in range(100):
# blit next image into screen buffer
SDL_BlitSurface(images[i % cnt], None, screen, None)
# load screen buffer into actual screen
SDL_UpdateWindowSurface(win)
# show fps
sec = time.time()-t_start
print("fps: "+str(100/sec))
except:
print(sys.exc_info())
# clean up
if 'win' in locals():
if 'images' in locals():
for img in images: SDL_FreeSurface(img)
SDL_DestroyWindow(win)
SDL_Quit()