GSoC/GCI Archive
Google Summer of Code 2010


Web Page:

Mailing List:

OpenImageIO (OIIO for short) is a library for reading and writing images, 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 is 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, ICO, RMan Zfile, Softimage PIC, and DDS 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) 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), iconvert (convert among formats, data types, or modify metadata), idiff (compare images), igrep (search images for matching metadata). Because these tools are based on ImageInput/ImageOutput, they work with any image formats for which ImageIO plugins are available.

  • A really nice image viewer, iv, also based on OpenImageIO classes (and so will work with any formats for which plugins are available).

  • Supported on Linux, OS X, and Windows.

  • All available under the BSD license, so you may modify it and use it in both open source or proprietary apps.








  • File format plugins development For an image handling library the support for a wide array of formats is key. While OpenImageIO already has an impressive spectrum of available plug-ins, it still lacks the support for several popular formats. This project aims to fill the gaps in the list of supported formats, starting out with finishing the already half-baked DDS, then moving on to Adobe DNG or any other format that is deemed high-priority by the mentor; possibly extending to cover more as time permits.
  • Socket communication OpenImageIO is a library for reading and writing images. I would like to take up the "Socket communication" project. It's aimed at adding socket support for OpenImageIO. This means that one of my goal will be adding plugin for writing and reading images from sockets. What will increase the library flexibility. Another part of this project is integrating socket plugin with OIIO's image viewer, which offer a new ways of use it.