- Goal: View pictures over a very slow (14.4) connection
- Goal: View pictures at different sizes
- pictures (viewports) on page should start out small / thumbnail
- widget to expand size of all images - size based on area, not hight or width
- Goal: View pictures at any desired size - can choose size appropriate for current monitor
- drag corner to resize image viewport
- pan / zoom image within viewport
- Goal: Use common code for album pages
- Goal: support very large screens and very very large images
- Idea: create mip map of original image, using tiles.
- Combine all tiles into one file to save filesystem space.
- Can also use single header (EXIF info, etc)
- Server can send entire file, or reconstitute tiles into files
- Server can use mip tiles to generate complete image at any size.
- Client can create / reconstitute mip tile map on the fly by querying for tiles
- Support header-only request (ie, raw size info) (XML?)
- acts as a cache - client only needs to request each tile once
- (!) client can regenerate low rez tiles on the fly if all hi res
tiles have been downloaded
- Useful if mip tile map knows underlying image format so it can use shared headers, but
this is not strictly necessary. If tiles are treated as opaque blobs, same tile server code
can server any image format (or any sort of data)
- Two level - blob extracter and then image knowledge overlay
- Note: Always save original file so it will be available for new formats
- (No need to extend pyramid to smallest files (ie, 2x2 image) - stop at smallest tile size (ie, 128x128) )
- Can we build a "steeper" pyramid than a quad tree (/2)? Maybe /128 is too steep, but /4 or /8?
- (Google maps uses /2)
- Example: 32,548x11,526 - 255 128-pixel tiles wide.
- 32,548x11,526 at 2/level (8+1 levels): 255x91 @ 128 (1:1); 128x46 @ 256 (1:2); 64x23 @ 512 (1:4); 32x12 @ 1,024 (1:8); 16x6 @ 2,048 (1:16); 8x3 @ 4,096 (1:32); 4x2 @ 8,192 (1:64); 2x1 @ 16,384 (1:128); 1x1 @ 32,768 (1:256)
- 32,548x11,526 at 4/level (4+1 levels): 255x91 @ 128 (1:1); 64x23 @ 512 (1:4); 16x6 @ 2,048 (1:16); 4x2 @ 8,192 (1:64); 1x1 @ 32,768 (1:256)
- 32,548x11,526 at 8/level (3+1 levels): 255x91 @ 128 (1:1); 32x12 @ 1,024 (1:8); 4x2 @ 8,192 (1:64); 1x1 @ 65,536 (1:512)
- 32,548x11,526 at 128/level (2+1 levels): 255x91 @ 128 (1:1); 2x1 @ 16,384 (1:128); 1x1 @ 2,097,152 (1:16,384)
- Excel spreadsheet - /4 looks good
- (Am I doing this wrong? should I resample "down" rather than "up"?)
(At /2, there is no difference conveniently; only at /4 and above does it matter.)
- Thumbnail can come from this file
- Goal: fall back gracefully: pure HTML / JavaScript / Flash/Silverlight
- Need:
- tile file manager (same code for client and server?) (API / CLI)
- image chopper / pyramid builder (API / CLI)
- tile server (web)
- album page format (partially existing)
- album page interpreter (web server side)
- album page interpreter (web client side)
- album page editor? (web client / server)
C o m m e n t s :
(nothing yet)