InstantImager Reader

Author: George H. Silva (George_Silva at chemie_bio_uni-giessen_de)
Requires: ImageJ 1.30u or later
History: 2005/08/23: v1.00 - initial release
2005/08/26: v1.01 - minor fixes and added code for extracting/displaying header information
2005/08/29: v1.02 - removed "public" modifiers from class variables
Source: InstantImager_Reader.java
Installation: Download InstantImager_Reader.class to the plugins folder, or a subfolder of the plugins folder.
Description: Opens images in the Packard InstantImager format (*.img); also extracts the header information into a log window. Packard was purchased by PerkinElmer many years ago and development/support/sales of the InstantImager were terminated. However, many labs still use these machines today running Windows 3.x/95 (!) with the default software (running in 256-color mode). The images themselves are 16-bit data files. After many (many!) web searches, I could not find any information regarding the file format or updated software for the InstantImager (especially something that could display/process the images on modern PC systems in something better than 256-color mode). Using a hex-editor and some guess work, I hacked out this plugin to open/analyze the data in ImageJ. As such, I would appreciate comments if things do or do not work.
Optional: I made modifications to the HandleExtraFileTypes plugin so you can open InstantImager images using File/Open or by using drag and drop. You can download my modified version as source (HandleExtraFileTypes.java) or pre-compiled (HandleExtraFileTypes.class). Or you can modify your own HandleExtraFileTypes class by adding the following code:
// Packard InstantImager format (.img) handler -> check HERE before Analyze check below!
// Note that the InstantImager_Reader plugin extends the ImagePlus class.
// Check extension and signature bytes KAJ_
if (name.endsWith(".img") && buf[0]==75 && buf[1]==65 && buf[2]==74 && buf[3]==0) {
  imp = (ImagePlus)IJ.runPlugIn("InstantImager_Reader", path);
  if (imp==null) width = PLUGIN_NOT_FOUND;
  if (imp!=null&&imp.getWidth()==0) imp = null;
  return imp;
}
Note: Insert this code before any code that checks for an .img file extension (this code checks the extension and file signature).