About GridPix


GridPix is a file format and image presentation software suite developed by the Tertiary Disk Project at the University of California at Berkeley.

GridPix allows users to zoom in to portions of a large image and scroll around to view different parts. GridPix is a collection of server-side scripts and does not require the user to download a large plugin or an applet. The implementation of GridPix is done entirely in HTML, any thus can be viewed on virtually any graphical web browser, regardless of support for advanced features. It is immune to memory leaks and similar bugs, as caching of images are done by the operating system and the browser.

This page only explains the usage and briefly introduces you to the concept of tiling. For a more complete writeup, please refer to the GridPix documentation.

You can get the GridPix software from our ftp site. The latest version is 2.0.

Here is a ridiculously large GridPix image for your amusement. Please select your screen size: 15 inch 17 inch 20 inch.

Usage

Here is a sample GridPix screen. (Note: this is only one of the several possible interfaces. You may see different graphics and button layouts for your application.)

The grids are not visible but the image is actually loaded in 15 pieces (3 rows and 5 columns). There are three main functions, namely zooming in, zooming out, and scrolling.

* Zoom in
The user can zoom in by clicking the mouse on any part of the image. The new image will be four times the resolution of the original (twice the width and twice the height). The size of the window will not change, so the user will be seeing the area one quarter of the original image. The new image will be centered around the tile clicked by the user. The user can repeatedly click on the image to zoom in past the original size to some compile-time defined maximum (1,600% by default).
* Zoom out
One of the buttons on the right is the ``zoom-out'' button. The image will be one quarter the size, centered at the same spot. The user can repeatedly click on the zoom-out button to shrink the image down to a minimum defined at image conversion time (12.5% by default).
* Scroll
The user can click on the arrows on the horizontal or vertical scrollbars to scroll the image one tile in that direction. (Note that since GridPix is implemented in HTML, it is not possible to grab and drag on the ``thumb'' of the scrollbar or the image itself.) In addition, the user can scroll the image all the way to one end by clicking on the special ``scroll to edge'' arrows at the end of the scrollbars.

Motivation

There are several problems with presenting a collection of large images on the Internet. One of them is obviously storage space, which is adressed by the Tertiary Disk architecture. Here are a few others. Please refer to the application page if you are not familiar with the images we are serving.

* Network Bandwidth
One problem is available network bandwidth. Unless the user is on the same local area network as the server, it is simply not appropriate to dump even the 1MB JPEG on the user. If the user is sitting behind a dial-up network, the situation is even worse, as it will take more than a few minutes to download the entire image.
* Copyright
Another problem, which is a unique situation for us, is copyright of artworks. There are many current artists whose artworks are photographed by the museum. It is not appropriate for the museum to distribute full-size images of those artworks, even in low-quality (JPEG format).
* Usability
The last problem is presentability. Nobody owns a monitor that can display 3,000 by 2,000 pixels all at once. If the full image is presented as a single HTML page, the user will only get to see part of it and not the whole image anyway. One alternative is to present the images as a sequence of linked HTML pages, i.e., have the user click on an image to retrieve a larger version. This approach will increase the total size of data transfer over the network.

Implementation

GridPix Images

This is a GridPix file consisting of three layers. Each layer represents the image at a certain resolution. In the current implementation, the difference in resolution between adjacent layers is 2 in both dimensions; i.e., 4 pixels in one layer becomes one pixel in the layer underneath. This factor is not inherent to the design of GridPix.

Within each layer, the image is further broken up into tiles. The tiles are all squares of the same size except for the right and bottom edges, which are usually smaller due to the image width and height being not exactly integer multiples of the tile width and height.

The small numbers inside or adjacent to each tile is the tile's serial number. The number starts from 1 in the smallest layer and continues between adjacent layers. In our sample, layer 1 consists of tiles 1 and 2, layer 2 consists of tiles 3 through 8, and layer 3 consists of tiles 9 through 23. (In this example, tiles 1, 2, 5-8, and 19-23 are not ``full'' tiles.) The tile numbers have no bearing on the image themselves; they are used for fast tile retrieval, as the GridPix server does not have to compute the index of the tile in the file based on image resolutions and other information. Normally, the server only sees the file as a table of indices which tells it where it can find a sub-file (tile); it does not have to understand that they are image files, for instance.

The tiles are numbered in breadth-first order to encourage caching of file blocks by the operating system. As the user scrolls around in a certain resolution, all the tiles are stored on adjacent disk blocks and will very likely to be cached. They will also benefit from read-aheads if the filesystem is clever enough.

The largest layer stored in GridPix file is the original size. When the client requests a tile of a layer larger than the original, the tile retrieval program creates those tiles on-the-fly. This is the only case in which the GridPix server has to decode or encode JPEG images. This process is described in detail in the accompanying document.


NOW Home Page | Tertiary Disk Home Page