Skip to content

fix: support get() at pixel density > 1 in p5.Framebuffer (fixes #8583)#8584

Open
MASTERsj01 wants to merge 1 commit intoprocessing:mainfrom
MASTERsj01:fix/framebuffer-get-pixel-density
Open

fix: support get() at pixel density > 1 in p5.Framebuffer (fixes #8583)#8584
MASTERsj01 wants to merge 1 commit intoprocessing:mainfrom
MASTERsj01:fix/framebuffer-get-pixel-density

Conversation

@MASTERsj01
Copy link

Summary

Fixes p5.Framebuffer.get() to properly support pixel density > 1 by using p5.Image.pixelDensity() instead of lossy resize().

Resolves #8583

Problem

When density > 1, get() reads the full high-resolution pixel data (e.g. 200×200 at density 2 for a 100×100 framebuffer) but then calls resize(100, 100) which performs a lossy downscale — discarding the extra resolution that high-DPI displays need.

Fix

Replace resize(w, h) with pixelDensity(density) on the returned p5.Image. This way the image retains its full-resolution data (200×200 pixels) while reporting the correct logical dimensions (100×100), matching how high-DPI images work throughout p5.js.

Changes

Location What Changed
get() line 1574 resize(w, h) → pixelDensity(this.density)
get() line 1503 console.warnp5._friendlyError() for out-of-bounds warning
Removed TODO comment

Notes

  • All existing tests pass
  • 1 file changed: 20 insertions, 16 deletions

- Replace lossy resize(w, h) with pixelDensity(density) on the returned
  p5.Image so that it retains full-resolution pixel data while reporting
  correct logical width and height
- Replace console.warn with p5._friendlyError for out-of-bounds
  coordinate warning in get()
- Remove TODO comment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

p5.Framebuffer.get() loses resolution at pixel density > 1

1 participant