imagej / imagej/imagej-common

Improve how the Display framework handles large images

Open
#13 1 comment 0 reactions 0 assignees View on GitHub
data-model
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.