Skip to content

Library for reading / writing images from multiple file formats in a way suitable for color management and manipulating them.

License

Notifications You must be signed in to change notification settings

freudi74/mfimage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libmfimage

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.

Features:

  • 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, ...)

Internal image handling

Color Model channel depth alpha
RGB 8, 16, float
GRAY 8, 16, float
CMYK 8, 16, float
L*a*b* float

Supported Image File formats:

File Format Read Write
TIFF
JPEG 📋
JP2 📋
PNG 📋
BMP
PCX
TGA
PSD 📋
PDF 📋 📋
📋 = planned

Sub-Formats supported for reading

###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

Language & Operating system:

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.

License

Dual-license: GPLv3, commercial license available on request.

About

Library for reading / writing images from multiple file formats in a way suitable for color management and manipulating them.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published