You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
1 year ago
|
#!/usr/bin/env python
|
||
|
import time
|
||
|
from samplebase import SampleBase
|
||
|
from PIL import Image
|
||
|
|
||
|
|
||
|
class ImageScroller(SampleBase):
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
super(ImageScroller, self).__init__(*args, **kwargs)
|
||
|
self.parser.add_argument("-i", "--image", help="The image to display", default="../../../examples-api-use/runtext.ppm")
|
||
|
|
||
|
def run(self):
|
||
|
if not 'image' in self.__dict__:
|
||
|
self.image = Image.open(self.args.image).convert('RGB')
|
||
|
self.image.resize((self.matrix.width, self.matrix.height), Image.ANTIALIAS)
|
||
|
|
||
|
double_buffer = self.matrix.CreateFrameCanvas()
|
||
|
img_width, img_height = self.image.size
|
||
|
|
||
|
# let's scroll
|
||
|
xpos = 0
|
||
|
while True:
|
||
|
xpos += 1
|
||
|
if (xpos > img_width):
|
||
|
xpos = 0
|
||
|
|
||
|
double_buffer.SetImage(self.image, -xpos)
|
||
|
double_buffer.SetImage(self.image, -xpos + img_width)
|
||
|
|
||
|
double_buffer = self.matrix.SwapOnVSync(double_buffer)
|
||
|
time.sleep(0.01)
|
||
|
|
||
|
# Main function
|
||
|
# e.g. call with
|
||
|
# sudo ./image-scroller.py --chain=4
|
||
|
# if you have a chain of four
|
||
|
if __name__ == "__main__":
|
||
|
image_scroller = ImageScroller()
|
||
|
if (not image_scroller.process()):
|
||
|
image_scroller.print_help()
|