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

Commitb80e090

Browse files
ImageView: Try free'ing up memory
1 parent46526c6 commitb80e090

File tree

1 file changed

+19
-2
lines changed
  • internal_filesystem/apps/com.micropythonos.imageview/assets

1 file changed

+19
-2
lines changed

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
importgc
12
importos
23
importtime
34

@@ -21,6 +22,7 @@ class ImageView(Activity):
2122
# Widgets
2223
image=None
2324
gif=None
25+
current_image_dsc=None# Track current image descriptor
2426

2527
defonCreate(self):
2628
screen=lv.obj()
@@ -208,6 +210,7 @@ def extract_dimensions_and_format(self, filename):
208210
defshow_image(self,name):
209211
try:
210212
self.label.set_text(name)
213+
self.clear_image()
211214
ifname.lower().endswith(".gif"):
212215
print("switching to gif mode...")
213216
self.image.add_flag(lv.obj.FLAG.HIDDEN)
@@ -233,7 +236,7 @@ def show_image(self, name):
233236
cf=lv.COLOR_FORMAT.RGB565
234237
ifcolor_format!="RGB565":
235238
print(f"WARNING: unknown color format{color_format}, assuming RGB565...")
236-
image_dsc=lv.image_dsc_t({
239+
self.current_image_dsc=lv.image_dsc_t({
237240
"header": {
238241
"magic":lv.IMAGE_HEADER_MAGIC,
239242
"w":width,
@@ -244,7 +247,7 @@ def show_image(self, name):
244247
'data_size':len(image_data),
245248
'data':image_data
246249
})
247-
self.image.set_src(image_dsc)
250+
self.image.set_src(self.current_image_dsc)
248251
self.scale_image()
249252
exceptOSErrorase:
250253
print(f"show_image got exception:{e}")
@@ -261,6 +264,8 @@ def scale_image(self):
261264
self.image.decoder_get_info(self.image.get_src(),header)
262265
image_w=header.w
263266
image_h=header.h
267+
ifimage_w==0orimage_h==0:
268+
return
264269
print(f"the real image has size:{header.w}x{header.h}")
265270
scale_factor_w=round(lvgl_w*256/image_w)
266271
scale_factor_h=round(lvgl_h*256/image_h)
@@ -270,3 +275,15 @@ def scale_image(self):
270275
#self.image.set_scale(max(scale_factor_w,scale_factor_h)) # fills the entire screen but cuts off borders
271276
self.image.set_scale(min(scale_factor_w,scale_factor_h))
272277
print(f"after set_scale, the LVGL image has size:{self.image.get_width()}x{self.image.get_height()}")
278+
279+
280+
defclear_image(self):
281+
"""Clear current image or GIF source to free memory."""
282+
ifself.current_image_dsc:
283+
self.current_image_dsc=None# Release reference to descriptor
284+
self.image.set_src(None)# Clear image source
285+
self.gif.set_src(None)# Clear GIF source
286+
#self.gif.add_flag(lv.obj.FLAG.HIDDEN)
287+
#self.image.remove_flag(lv.obj.FLAG.HIDDEN)
288+
#lv.image_cache_invalidate_src(None) # Invalidate LVGL image cache
289+
gc.collect()# Force garbage collection

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp