This page is part of the OpenRaster file format description. It has archived discussion threads.

At the moment this page serves as a brainstorming sandbox for a OpenRaster reference implementation (from now on referred to as libora). Following libpng as an example it should be written in standard C for easy portability, have a low dependency count and a low memory consumption.


A list of dependencies (the goal is to use only the really essential ones):

  • libpng - for image encoding/compression
  • zlib - for compression
  • expat - for XML parsing
  • exempi - XMP metadata handling


Simplified BSD License


The development repository of libora is located here. To build the code you will need (besides the required libraries) the CMake build system.

The code was so far tested only on Ubuntu 9.10, so expect some initial problems when porting to other platforms (especially Windows and OSX).


  • What is done?
    • Basic opening and saving of documents
    • Nested stack support (Tested only for single stack ... probably some bugs here)
    • Layer saving for RGBA/RGB 8/16-bit images (tested only for 8-bit)
    • oratool is some kind of demonstration/test ... put ORA file in and it reads it, writes it back (layers) and measures time
    • oratool: unpacking layers to multiple files - works for PNGs but disabled at the moment
  • What will be done
    • Thumbnail saving (image provided by the host application)
    • oratool: Basic terminal tool for displaying ORA info
    • Basic metadata support
    • Tiled images saving mechanisms (reduce memory usage for applications that use tiled images)
  • What would be nice to do
    • Custom layer metadata
    • Vector layers, text layers
    • Filters (Contributors: 12 Jan -- 17 Feb 2010 Lukacu