Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb728aa7

Browse files
ImageView: add GIF support
1 parent1993e93 commitb728aa7

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

‎draft_code/saved_functions.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,12 @@ def file_explorer_event_cb(e):
277277
print("done")
278278

279279

280+
screen=lv.obj()
281+
gif=lv.gif(screen)
282+
gif.set_src("M:data/images/tunnel_160x107.gif")
283+
gif.center()
284+
#gif.set_size(320,240)
285+
lv.screen_load(screen)
280286

281287
# BIN
282288
withopen("/icon_64x64.bin",'rb')asf:
@@ -619,6 +625,8 @@ def log_callback(level, log_str):
619625
lv.log_register_print_cb(log_callback)
620626

621627

628+
lv.log_register_print_cb(None)
629+
622630
# Function to get FPS
623631
defget_fps():
624632
returnfps_buffer[0]

‎internal_filesystem/apps/com.micropythonos.imageview/assets/imageview.py‎

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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
defonCreate(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(lambdae: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(lambdae: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
foriteminos.listdir(self.imagedir):
5967
print(item)
60-
ifitem.endswith(".jpg")oritem.endswith(".jpeg")oritem.endswith(".png")oritem.endswith(".raw"):
68+
lowercase=item.lower()
69+
iflowercase.endswith(".jpg")orlowercase.endswith(".jpeg")orlowercase.endswith(".png")orlowercase.endswith(".raw")orlowercase.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
defshow_image(self,name):
190199
try:
191200
self.label.set_text(name)
192-
ifname.endswith(".raw"):
201+
ifname.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+
ifname.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
exceptOSErrorase:
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

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp