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.
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.
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.
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.