Draw Image Testing script with bounce
import csi
import image
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000)
clock = time.clock()
BOUNCE = True
RESCALE = True
SMALL_IMAGE_SCALE = 3
CYCLE_FORMATS = True
CYCLE_MASK = True
value_mixer = 0
x = 100
y = 50
xd = 1
yd = 1
rescale = 1.0
rd = 0.1
max_rescale = 5
min_rescale = rd * 2
xmin = -csi0.width() / SMALL_IMAGE_SCALE - 8
ymin = -csi0.height() / SMALL_IMAGE_SCALE - 8
xmax = csi0.width() + 8
ymax = csi0.height() + 8
while True:
clock.tick()
status = ""
value_mixer = value_mixer + 1
img = csi0.snapshot()
small_img = img.scale(x_scale=1.0 / SMALL_IMAGE_SCALE,
y_scale=1.0 / SMALL_IMAGE_SCALE,
hint=image.AREA, copy=True)
status = "rgb565 "
if CYCLE_FORMATS:
image_format = (value_mixer >> 8) & 3
if image_format == 1:
small_img = small_img.to_bitmap(copy=True)
status = "bitmap "
if image_format == 2:
small_img = small_img.to_grayscale(copy=True)
status = "grayscale "
if image_format == 3:
small_img = small_img.to_rgb565(copy=True)
status = "rgb565 "
if BOUNCE:
x = x + xd
if x < xmin or x > xmax:
xd = -xd
y = y + yd
if y < ymin or y > ymax:
yd = -yd
if RESCALE:
rescale = rescale + rd
if rescale < min_rescale or rescale > max_rescale:
rd = -rd
scaled_width = int(small_img.width() * abs(rescale))
scaled_height = int(small_img.height() * abs(rescale))
apply_mask = CYCLE_MASK and ((value_mixer >> 9) & 1)
if apply_mask:
img.draw_image(
small_img,
int(x),
int(y),
mask=small_img.to_bitmap(copy=True),
x_scale=rescale,
y_scale=rescale,
alpha=240,
hint=image.BILINEAR
)
status += "alpha:240 "
status += "+mask "
else:
img.draw_image(
small_img,
int(x),
int(y),
x_scale=rescale,
y_scale=rescale,
alpha=128,
hint=image.BILINEAR
)
status += "alpha:128 "
img.draw_string((8, 0), status, mono_space=False)
print(clock.fps())