You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pico Display Pack 2从URL取图片时遇Micropython MemoryError

问题

我购买了Pico Display Pack 2,尝试显示图片。将图片下载到Pi Pico W本地后可正常显示,但从URL下载并显示图片时出现错误:MemoryError: memory allocation failed, allocating 21760 bytes。测试过能从URL获取纯文本,但获取图片时触发内存错误,以下是完整代码:

import network
import urequests
import time
import picographics
import jpegdec
from pimoroni import Button


wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","password")
time.sleep(5)
print(wlan.isconnected())


display = picographics.PicoGraphics(display=picographics.DISPLAY_PICO_DISPLAY_2, rotate=0)
display.set_backlight(0.8)

# Create a new JPEG decoder for our PicoGraphics
j = jpegdec.JPEG(display)

# Open the JPEG file
#j.open_file("squid.jpg")

# Decode the JPEG
#j.decode(0, 0, jpegdec.JPEG_SCALE_FULL)

if wlan.isconnected():
    
    res = urequests.get(url='https://squirrel365.io/tmp/squid.jpg')
   
    j.open_RAM(memoryview(res.content))

    # Decode the JPEG
    j.decode(0, 0, jpegdec.JPEG_SCALE_FULL)

    # Display the result
    display.update()

解决思路

  • 先下载到本地文件再解码
    Pi Pico W的RAM仅264KB,urequests.get()会把整张图片的二进制数据全部加载到内存,叠加解码所需的临时空间很容易超出上限。改为先把图片写入内置闪存,再从本地文件读取解码,避免内存被一次性占满:

    import gc  # 导入垃圾回收模块
    
    if wlan.isconnected():
        res = urequests.get(url='https://squirrel365.io/tmp/squid.jpg')
        # 将图片写入本地临时文件
        with open("tmp_img.jpg", "wb") as f:
            f.write(res.content)
        res.close()  # 立即释放请求占用的内存
        gc.collect()  # 强制回收闲置内存
        
        # 从本地文件打开并解码
        j.open_file("tmp_img.jpg")
        j.decode(0, 0, jpegdec.JPEG_SCALE_FULL)
        display.update()
    
  • 压缩图片尺寸与质量
    如果目标图片分辨率超过Pico Display Pack 2的320x240屏幕,解码时会消耗更多内存。提前把图片压缩到和屏幕一致的分辨率,同时降低JPEG质量(比如70%),缩小文件体积的同时减少解码内存需求。

  • 减少内存占用的细节优化
    代码中尽量避免不必要的变量留存,用完资源后立即关闭(比如res.close()),并主动触发垃圾回收gc.collect(),在解码前尽可能释放闲置内存。

  • 替换轻量HTTP库
    urequests本身占用内存较高,可尝试更精简的HTTP客户端库(如tiny_requests),进一步降低内存开销,不过对新手来说,优先尝试前三种方法更易操作。

内容的提问来源于stack exchange,提问作者Rich Harvey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:55:23