@@ -15,16 +15,24 @@ class ImageView(Activity):
1515 images = []
1616 image_nr = None
1717 image_timer = None
18- image = None
1918 fullscreen = False
2019
20+ # Widgets
21+ image = None
22+ gif = None
23+
2124 def onCreate (self ):
2225 screen = lv .obj ()
2326 self .image = lv .image (screen )
2427 self .image .center ()
2528 self .image .add_flag (lv .obj .FLAG .CLICKABLE )
26- #self.image.add_event_cb(self.print_events, lv.EVENT.ALL, None)
2729 self .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)
2836 self .label = lv .label (screen )
2937 self .label .set_text ('Loading images from\n {self.imagedir}' )
3038 self .label .align (lv .ALIGN .TOP_MID ,0 ,0 )
@@ -57,7 +65,8 @@ def onResume(self, screen):
5765 self .images .clear ()
5866 for item in os .listdir (self .imagedir ):
5967 print (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" ):
6170 fullname = f"{ self .imagedir } /{ item } "
6271 size = os .stat (fullname )[6 ]
6372 print (f"size: { size } " )
@@ -189,7 +198,17 @@ def extract_dimensions_and_format(self, filename):
189198 def show_image (self , name ):
190199 try :
191200 self .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" ):
193212 f = open (name , 'rb' )
194213 image_data = f .read ()
195214 print (f"loaded { len (image_data )} bytes from .raw file" )
@@ -212,8 +231,6 @@ def show_image(self, name):
212231 'data' : image_data
213232 })
214233 self .image .set_src (image_dsc )
215- else :
216- self .image .set_src (f"M:{ name } " )
217234 self .scale_image ()
218235 except OSError as e :
219236 print (f"show_image got exception: { e } " )
@@ -235,6 +252,7 @@ def scale_image(self):
235252 scale_factor_h = round (lvgl_h * 256 / image_h )
236253 print (f"scale_factors: { scale_factor_w } ,{ scale_factor_h } " )
237254 self .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
239257 self .image .set_scale (min (scale_factor_w ,scale_factor_h ))
240258 print (f"after set_scale, the LVGL image has size: { self .image .get_width ()} x{ self .image .get_height ()} " )
0 commit comments