Library for reading / writing images from multiple file formats in a way suitable for color management and manipulating them.
The main purpose is reading image files, if suitableobeying color space instructions embedded in them in a coprehensible way and indicating if no color space instructions are included, so that the image loaded in memory can now be used in a color managed application.
There are also manipulation routines (flip, rotation, separation, combination, levels & gamma, brightness+contrast, alpha-channel manipulation, compositing obeying alpha-channel) for images available as well as single color value coversion routines for often used color space conversions (icc-profile ↔ icc-profile, icc-profile ↔ L*a*b*, icc-profile ↔ sRGB, RGB ↔ HSV, L*a*b* ↔ LCh).
Writing images is limitted to some formats, at least in the initial version. The best implemented format for writing images to disk is tiff, which by design allows flexible, lossless, compressed and multi-page images - everything one could ask for!
Its design goals are to be as operating system independant as possible, easy to use and maintain, high performance capable. And of course dealing with colors in the "right" way, allowing an ICC workflow to be built ontop of it, giving you all the required information from the image file you need for that at a small footprint.
The original purpose of this library was to be the backend for image reading/writing/manipulation of the mfscan sane frontend.
- reading/writing images from multiple file formats, inlcuding GIF, TIF, JPEG, JP2, PNG, BMP, PCX, TGA.
- When suitable, assigning color spaces to the image (e.g. PNG sRGB, JP2 sRGB, PNG cHRM/gAMA, embedded ICC profiles)
- Support to convert color spaces based on littleCms
- Using wide-spread standard and de-facto standard image format libraries like GIFLIB, libtiff-4, libjpeg-turbo, openJpeg, libpng.
- Wide range support for subformats (for example CMYK JPEG, TIF Compressions, ...)
Color Model | channel depth | alpha |
---|---|---|
RGB | 8, 16, float | ✅ |
GRAY | 8, 16, float | ✅ |
CMYK | 8, 16, float | ✅ |
L*a*b* | float | ✅ |
File Format | Read | Write |
---|---|---|
TIFF | ✅ | ✅ |
JPEG | ✅ | 📋 |
JP2 | ✅ | 📋 |
PNG | ✅ | 📋 |
BMP | ✅ | ✅ |
PCX | ✅ | ◽ |
TGA | ✅ | ◽ |
PSD | 📋 | ◽ |
📋 | 📋 | |
📋 = planned |
###TIFF
Color Model | BitDepth | AlphaChannel |
---|---|---|
Monochrome | 1, 4, 8, 16 | ✅ |
RGB | 8, 16 | ✅ |
RGB Palette | 4, 8 | ✅ |
CMYK | 8, 16 | ✅ |
CIELab* | 📋 | 📋 |
Compression: Uncompressed, RLE, FaxG3, FaxG4, LZW, JPEG, Deflate, Packbits, Thunderscan, LZMA2 Organisation: Continguos, Planar / Stripes, Tiles Multipage: ✅
###JPEG
Color Model | BitDepth | AlphaChannel |
---|---|---|
Todo: Describe |
###JPEG2000
Color Model | BitDepth | AlphaChannel |
---|---|---|
Todo: Describe |
###PNG
Color Model | BitDepth | AlphaChannel |
---|---|---|
Todo: Describe |
###BMP
Color Model | BitDepth | AlphaChannel |
---|---|---|
Todo: Describe |
###PCX
Color Model | BitDepth | AlphaChannel |
---|---|---|
Todo: Describe |
###TGA
Color Model | BitDepth | AlphaChannel |
---|---|---|
Todo: Describe |
###TGA
Color Model | BitDepth | AlphaChannel |
---|---|---|
Todo: Describe |
###PDF Embedded JPEG images in PDF pages. Not yet implemented. Todo: Describe deaitls
The library is internally written in C++(11/14), but also comes with an external C-interface to simplify usage from other languages and for Windows dlls.
Dual-license: GPLv3, commercial license available on request.