@@ -15,16 +15,24 @@ class ImageView(Activity):
1515images = []
1616image_nr = None
1717image_timer = None
18- image = None
1918fullscreen = False
2019
20+ # Widgets
21+ image = None
22+ gif = None
23+
2124def onCreate (self ):
2225screen = lv .obj ()
2326self .image = lv .image (screen )
2427self .image .center ()
2528self .image .add_flag (lv .obj .FLAG .CLICKABLE )
26- #self.image.add_event_cb(self.print_events, lv.EVENT.ALL, None)
2729self .image .add_event_cb (lambda e :self .toggle_fullscreen (),lv .EVENT .CLICKED ,None )
30+ self .gif = lv .gif (screen )
31+ self .gif .center ()
32+ self .gif .add_flag (lv .obj .FLAG .CLICKABLE )
33+ self .gif .add_flag (lv .obj .FLAG .HIDDEN )
34+ self .gif .add_event_cb (lambda e :self .toggle_fullscreen (),lv .EVENT .CLICKED ,None )
35+ #self.image.add_event_cb(self.print_events, lv.EVENT.ALL, None)
2836self .label = lv .label (screen )
2937self .label .set_text ('Loading images from\n {self.imagedir}' )
3038self .label .align (lv .ALIGN .TOP_MID ,0 ,0 )
@@ -57,7 +65,8 @@ def onResume(self, screen):
5765self .images .clear ()
5866for item in os .listdir (self .imagedir ):
5967print (item )
60- if item .endswith (".jpg" )or item .endswith (".jpeg" )or item .endswith (".png" )or item .endswith (".raw" ):
68+ lowercase = item .lower ()
69+ if lowercase .endswith (".jpg" )or lowercase .endswith (".jpeg" )or lowercase .endswith (".png" )or lowercase .endswith (".raw" )or lowercase .endswith (".gif" ):
6170fullname = f"{ self .imagedir } /{ item } "
6271size = os .stat (fullname )[6 ]
6372print (f"size:{ size } " )
@@ -189,7 +198,17 @@ def extract_dimensions_and_format(self, filename):
189198def show_image (self ,name ):
190199try :
191200self .label .set_text (name )
192- if name .endswith (".raw" ):
201+ if name .lower ().endswith (".gif" ):
202+ print ("switching to gif mode..." )
203+ self .image .add_flag (lv .obj .FLAG .HIDDEN )
204+ self .gif .remove_flag (lv .obj .FLAG .HIDDEN )
205+ self .gif .set_src (f"M:{ name } " )
206+ else :
207+ self .gif .add_flag (lv .obj .FLAG .HIDDEN )
208+ self .image .remove_flag (lv .obj .FLAG .HIDDEN )
209+ self .image .set_src (f"M:{ name } " )
210+
211+ if name .lower ().endswith (".raw" ):
193212f = open (name ,'rb' )
194213image_data = f .read ()
195214print (f"loaded{ len (image_data )} bytes from .raw file" )
@@ -212,8 +231,6 @@ def show_image(self, name):
212231'data' :image_data
213232 })
214233self .image .set_src (image_dsc )
215- else :
216- self .image .set_src (f"M:{ name } " )
217234self .scale_image ()
218235except OSError as e :
219236print (f"show_image got exception:{ e } " )
@@ -235,6 +252,7 @@ def scale_image(self):
235252scale_factor_h = round (lvgl_h * 256 / image_h )
236253print (f"scale_factors:{ scale_factor_w } ,{ scale_factor_h } " )
237254self .image .set_size (lvgl_w ,lvgl_h )
255+ #self.gif.set_size(lvgl_w, lvgl_h) doesn't seem to do anything. get_style_transform_scale_x/y works but then it needs get_style_translate_x/y
238256#self.image.set_scale(max(scale_factor_w,scale_factor_h)) # fills the entire screen but cuts off borders
239257self .image .set_scale (min (scale_factor_w ,scale_factor_h ))
240258print (f"after set_scale, the LVGL image has size:{ self .image .get_width ()} x{ self .image .get_height ()} " )