OpenImageIO is a library for reading and writing images in many formats, and a bunch of related classes, utilities, and applications.
Main features include:
- Extremely simple but powerful ImageInput and ImageOutput APIs for reading and writing 2D images that are format agnostic — that is, a “client app” doesn’t need to know the details about any particular image file formats. Specific formats are implemented by DLL/DSO plugins.
- Format plugins for TIFF, JPEG/JFIF, OpenEXR, PNG, HDR/RGBE, Targa, JPEG-2000, FITS, BMP, and ICO formats. More coming! The plugins are really good at understanding all the strange corners of the image formats, and are very careful about preserving image metadata (including Exif, GPS, and IPTC data).
- An ImageCache class that transparently manages a cache so that it can access truly vast amounts of image data (thousands of image files totaling hundreds of GB) very efficiently using only a tiny amount (tens of megabytes at most) of runtime memory. Additionally, a TextureSystem class provides filtered MIP-map texture lookups, atop the nice caching behavior of ImageCache.
- Several image tools based on these classes, including iinfo (print detailed info about images including metadata), iconvert (convert among formats, data types, or modify metadata), idiff (compare images with statistics), igrep (search images for matching metadata), iv (an image viewer). Because these tools are based on ImageInput/ImageOutput, they work with any image formats for which ImageIO plugins are available.