About this project

TwelveMonkeys ImageIO is a set of plug-ins and extensions for the Java platform's javax.imageio package. Its stated goal is to add support for image file formats not covered by the JDK, so applications can read data found "in the wild" and retain access to legacy formats. Supported formats (read/write indicated in the README table): - BMP plugin: BMP (read/write), CUR (read), ICO (read/write) - JPEG plugin: JPEG (read/write), JPEG Lossless (read) - TIFF plugin: TIFF (read/write), BigTIFF (read/write) - PSD plugin: PSD (read, limited write), PSB (read) - PNM plugin: PAM, PBM, PGM, PPM, PFM - PCX plugin: PCX, DCX - PICT plugin: PICT, PNTG - Others: DDS, HDR, ICNS, IFF, SGI, TGA, WebP (read), XWD, Thumbs.db - Batik-based: SVG and WMF (read), requiring Apache Batik GIF, PNG and WBMP are already handled by the JDK standard plugins; for BMP, JPEG and TIFF the project offers extended support and extra features. Usage: after adding the JARs, plugins are discovered automatically at runtime, so basic reading is ImageIO.read(file) and writing is ImageIO.write(image, format, file). Advanced examples in the README show obtaining ImageReader/ImageWriter instances, setting ImageReadParam/ImageWriteParam, reading thumbnails and metadata, and querying dimensions without loading the full image. Additional utilities include Adobe clipping path support via com.twelvemonkeys.imageio.path.Paths, a ResampleOp image resizing operation with multiple filters, and DiffusionDither for Floyd-Steinberg dithering to IndexColorModel. The README also describes reading partially usable data from damaged images by supplying a destination BufferedImage. Installation: Maven coordinates under groupId com.twelvemonkeys.imageio (for example imageio-jpeg, imageio-tiff), or manual classpath JARs. For web applications, the IIOProviderContextListener is recommended to handle plugin loading/unloading, with a Jakarta classifier variant available. When building "fat" JARs, SPI files under META-INF/services must be merged (for example with the Maven Shade ServicesResourceTransformer). Building uses Maven (mvn package); the README notes Oracle JDK 8.x as the recommended build JDK and mentions possible test differences under OpenJDK. The project is published on Maven Central and links to CI, CodeQL, OpenSSF Scorecard and Best Practices badges.