JImageReader Homepage

JImageReader is an image reader that uses native Java code to read various image formats, with a focus on '80s and '90s raster formats. This allows you to easily consume images in these formats in your AWT, Swing, or JavaFX application.

Currently supported formats are listed below. Click on them to jump to their JavaDoc, which will have additional information on the format, its history, and which variants of the format are supported.

Format support is determined by the availability of documentation and sample images, as well as a degree of chance in what catches my fancy. Full documentation on what variants of these formats are supported is available in the JavaDocs and test suites.

Using the Library

JImageReader can be added to your project as a Maven dependency.


The Egg Paint, God Paint, Microsoft Paint, MegaPaint, PCX, and TGA formats all support the ImageIO SPI (Service Provider Interface), which allows you to load files very easily:

BufferedImage image = ImageIO.read("redmond.msp");

This means that if you already have a program reading more common formats such as PNG, JPG, and GIF via ImageIO's native support, you can expand your program's support to the these formats simply by adding JImageReader as a dependency of your program.

For the formats for which JImageReader does not support ImageIO's SPI, you can load them via the library's own API:

JImageReader reader = new SunIconReader("calctool.ico");
BufferedImage image = reader.getImage();


JImageReader uses the MIT license. In addition to being an interesting side project for me, one of its goals is to help preserve data that might otherwise be lost due to no longer being readable. In that spirit, its unrestricted use is encouraged.

I would be curious as to what useful tasks JImageReader is used for, so if you feel like sharing, drop an e-mail to the address mentioned in the "Support" section.

Additional Documentation

The online Javadocs are available here.

There is a Wiki available here, however, it is not fully up-to-date. I am currently migrating documentation from the Wiki to this page and the JavaDoc pages (which will compose the main source of truth), and will likely use the Wiki primarily for documentation of updates in the future.


JImageReader is a side project, and as such does not have commercial support. Updates will occur based on the availability of free time. You may also make your own updates to the source code as needed.

With that established, there are a few channels for support:

Any additional supporting information (upload of the image that is having issues/information about what cool tasks you'd use the new format support for/etc.) is likely to have a positive impact on the chance of your support requested being addressed, as well as on the timeframe. Motivation is the driver of updates to JImageReader, and knowing how updates could make it more useful helps in building that motivation.

The support contact e-mail is [name of this library][at][fastmail.fm]. Please note that the SourceHut page linked above, should be the primary point of contact.