Storage: view images #45

Open
opened 2026-10-06 05:34:11 +00:00 by twisla · 0 comments
Owner

Idea

Open image files from the card in the Storage App.

Why

The first session's design had "view text and images" for the file browser (Q30). The firmware writes no images today, so the first version leaves them out (F1, Q139). They'd come from Gemini downloads, from files copied to the card, and from screenshots if those are ever saved on the device (#17).

What's known

  • The screen is 240x135 in 8-bit colour (RGB332): 256 colours, so photos band; drawings and screenshots look right.
  • Memory decides the formats. BMP needs no decoder. PNG needs zlib (miniz is in the ROM) and a 32 KB window. JPEG needs a decoder (TJpgDec is small and M5GFX has one) and can scale down by 2, 4 or 8 while decoding, which is the only way a large photo fits.
  • An image larger than the screen has to be scaled or scrolled; it can't be held in RAM whole.
  • The firmware's own screenshots are 240x135 RGB332 frames: a trivial format to show, if they're ever saved as files.

Questions

  1. Which formats: BMP only, PNG, JPEG?
  2. Larger than the screen: scale to fit, or scroll?
  3. Dithering to 256 colours, or accept the banding?

Related

docs/milestones/F1.md (Q139), src/ui/screen.cpp (the RGB332 canvas), #3, #17.

## Idea Open image files from the card in the Storage App. ## Why The first session's design had "view text and images" for the file browser (Q30). The firmware writes no images today, so the first version leaves them out (F1, Q139). They'd come from Gemini downloads, from files copied to the card, and from screenshots if those are ever saved on the device (#17). ## What's known - The screen is 240x135 in 8-bit colour (RGB332): 256 colours, so photos band; drawings and screenshots look right. - **Memory decides the formats.** BMP needs no decoder. PNG needs zlib (miniz is in the ROM) and a 32 KB window. JPEG needs a decoder (TJpgDec is small and M5GFX has one) and can scale down by 2, 4 or 8 while decoding, which is the only way a large photo fits. - An image larger than the screen has to be scaled or scrolled; it can't be held in RAM whole. - The firmware's own screenshots are 240x135 RGB332 frames: a trivial format to show, if they're ever saved as files. ## Questions 1. Which formats: BMP only, PNG, JPEG? 2. Larger than the screen: scale to fit, or scroll? 3. Dithering to 256 colours, or accept the banding? ## Related `docs/milestones/F1.md` (Q139), `src/ui/screen.cpp` (the RGB332 canvas), #3, #17.
twisla added this to the F1 Files and Notes milestone 2026-10-06 05:34:11 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: twisla/roro9stack#45