Inky Frame 7.3运行image_gallery_sd.py失败:SD卡图片无法显示
解决Inky Frame从SD卡读取JPEG报错的问题
针对运行image_gallery_sd.py时出现的RuntimeError: JPEG: could not read file/buffer错误,结合你已确认SD卡可用、图片放Pico根目录可正常显示的情况,可按以下步骤排查:
检查路径与文件名细节
- 确认SD卡根目录下的图片文件名完全匹配脚本中的调用格式(Micropython对文件名大小写敏感,比如
0001.JPG和0001.jpg会被识别为不同文件) - 在
sd_test.py中添加代码import os; print(os.listdir('/sd')),打印SD卡内的文件列表,验证图片是否存在且路径正确
- 确认SD卡根目录下的图片文件名完全匹配脚本中的调用格式(Micropython对文件名大小写敏感,比如
验证JPEG格式兼容性
- Inky Frame的Micropython仅支持基线JPEG(不支持渐进式JPEG),且图片分辨率需匹配屏幕尺寸(如5.7寸屏为600x448)
- 用图片编辑工具(如系统画图、GIMP)将图片另存为基线JPEG格式,再复制到SD卡测试
核对SD卡挂载逻辑
- 对比
image_gallery_sd.py与sd_test.py中的SD卡挂载代码,确保SPI引脚、CS引脚参数完全一致,比如:import machine import sdcard import os spi = machine.SPI(0, sck=machine.Pin(18), mosi=machine.Pin(19), miso=machine.Pin(16)) cs = machine.Pin(17, machine.Pin.OUT) sd = sdcard.SDCard(spi, cs) vfs = os.VfsFat(sd) os.mount(vfs, "/sd") - 若挂载路径不是
/sd,脚本中的文件路径也需对应修改
- 对比
简化测试定位问题
- 编写极简测试脚本,直接从SD卡读取单张图片,排除原脚本循环或遍历逻辑的影响:
import inky_frame from jpegdec import JPEG import machine import sdcard import os # 挂载SD卡(复制sd_test中的挂载代码) spi = machine.SPI(0, sck=machine.Pin(18), mosi=machine.Pin(19), miso=machine.Pin(16)) cs = machine.Pin(17, machine.Pin.OUT) sd = sdcard.SDCard(spi, cs) vfs = os.VfsFat(sd) os.mount(vfs, "/sd") j = JPEG(inky_frame.display) j.open_file("/sd/0001.jpg") j.decode(0, 0, jpegdec.JPEG_SCALE_FULL) inky_frame.display.update() - 若此脚本成功运行,说明原脚本存在逻辑问题;若仍报错,需排查SD卡硬件兼容性
- 编写极简测试脚本,直接从SD卡读取单张图片,排除原脚本循环或遍历逻辑的影响:
排查SD卡本身问题
- 确保SD卡为FAT32文件系统(Micropython对NTFS/exFAT支持有限),格式化时使用默认分配单元大小
- 重新格式化SD卡并重新复制图片,避免文件传输过程中损坏;尝试更换8GB以内的小容量SD卡,部分大容量卡可能存在兼容性问题
内容的提问来源于stack exchange,提问作者Valerio Moreno
相关产品推荐
相关产品推荐

