Improve how the Display framework handles large images
- Dominant language
- Java
- Stars
- 12
- Forks
- 15
- PR merge metrics
- No merged PRs in 30d
Description
Currently AWTDisplayController is responsible for creating BufferedImages that are displayed in an ImageCanvas. The call to AWTDisplayController::update() creates a BufferedImage from the Dataset that is 1:1 scale in X & Y. For large Datasets this will be a problem.
Barry and Aivar discussed this some and noted some possible design changes.
We'd like to support the ability of the ImageCanvas to just display a BufferedImage that is made by AWTDisplayController. The ImageCanvas would pan and zoom on the given BufferedImage. The AWTDisplayController could make a BufferedImage from a number of tiles (allowing much less memory use).
After a certain zoom level is reached (1:1) then any zoom within ImageCanvas would just scale and pan on the last BufferedImage it was given. If panning or zooming out would cause a boundary of the current BufferedImage to become visible the ImageCanvas could say "hey, display controller, now I need to see region (x1,y1,x2,y2) of the image". The AWTDisplayController could then recalculate a new BufferedImage that represents that region of the Dataset building from some tiles as needed. ImageCanvas would display the new BufferedImage.
Migrated-From: http://trac.imagej.net/ticket/444
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading AWTDisplayController::update(), ImageCanvas, and the discussion of tiled BufferedImages and region requests in this issue. There is no test or additional entry point named in the payload; completion would require an agreed design supporting tiled image creation, panning, zooming, and requesting new visible regions without creating the full Dataset at 1:1 scale.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100