KOffice – TDE office suite
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

260 lines
6.5KB

  1. WARNING: OBSOLETE (Chalk's internal code has become much better by now)
  2. From time to time, people come up with the suggestion to use an
  3. existing imaging library with Chalk, to replace our own core. This
  4. file contains a list of all libraries known to me, and a short
  5. evaluation.
  6. Perhaps, one day, we will decide to either use an existing library, or
  7. remodel our core after one of those. Of the libraries present, except
  8. for our own Chalk, Vigra look like it's the best bet from a technical
  9. point of view, with Vips a good runner-up.
  10. * Chalk (http://koffice.kde.org/chalk)
  11. Chalk contains its own 2D image library, consisting of the tile
  12. manager, the layer classes and KisPainter. We really should separate
  13. this 2d lib from the interface code, and put it in a real lib with
  14. a well-defined interface.
  15. Advantages:
  16. - Already works
  17. - Optimized for interactive work
  18. - Allows different colour models
  19. - Uses GraphicsMagick or ImageMagick for loading and saving.
  20. Disadvantages:
  21. - Does not work well with different channel depths
  22. - Not integrated with CMS
  23. - TileManager complicated and slow for pixel reading and
  24. writing.
  25. * Gimp (http://www.gimp.org)
  26. The Gimp contains a complex core that allows interactive painting of
  27. images with a channel depth of 8 bits.
  28. Advantages:
  29. - Well tested, very complete
  30. - Optimized for interactive usage
  31. Disadvantages:
  32. - Written in C.
  33. - Not readily available as a library.
  34. - Depends on glib and gtk
  35. - 8-bit only
  36. - No colour models
  37. - Has problems handling really large images
  38. * Vigra (http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/)
  39. Vigra is a C++ imaging library written by Ullrich Koetthe to
  40. demonstrate his Phd thesis on flexible image algorithms.
  41. Advantages:
  42. - Supports very large images
  43. - Supports colour models
  44. - Supports different bit depths through templating
  45. - C++
  46. - Relatively small
  47. - Relatively well-documented
  48. Disadvantages:
  49. - License incompatible with GPL?
  50. - Not optimized for interactive use
  51. - Unsure about future development since this was a research
  52. project.
  53. * Vips (http://www.vips.ecs.soton.ac.uk/)
  54. Vips is a C library with a C++ layer. It has been designed for
  55. handling very large images, mainly in the context of research into
  56. paintings in museums like the National Gallery. It comes with a gtk2
  57. gui.
  58. Advantages:
  59. - Handles very large images
  60. - Handles colour models
  61. - Handles different bit depths
  62. - C++ interface
  63. Disadvantages:
  64. - Not optimized for paintbox type apps (even though it is
  65. possible).
  66. - Very large.
  67. * VXL (http://vxl.sourceforge.net/)
  68. VXL is a collection of small libraries that are used for compution
  69. vision and imaging purposes in an academic setting.
  70. Advantages:
  71. - Handles very large images
  72. - C++
  73. Disadvantages:
  74. - Not recently updated
  75. - Comes with its own core libraries that replace standard C++
  76. - Optimized for simple rgb images.
  77. - No license at all
  78. - Badly documented
  79. * CImg (http://cimg.sourceforge.net/)
  80. CImg is a very cool, very small library that offers some extremely
  81. innovative image effects, like inpainting of damaged or noise images.
  82. Advantages:
  83. - Small
  84. - GPL
  85. - Cool stuff
  86. Disadvantages:
  87. - Everything, including GUI stuff, in one header file.
  88. - badly documented.
  89. * Gegl (http://www.gegl.org/)
  90. Gegl was intended to become the Gimp 2.0 core, but development had
  91. stalled so much that the move to Gegl didn't happen before Gimp 2.0.
  92. However, the Thawte millionaire whose name has escaped me, has
  93. promised to support gegl development financially, freeing the
  94. developer to work full-time on it. It is, more or less, an attempt to
  95. write a templated library in C++ with the help of a custom language to
  96. describe image operations.
  97. Advantages:
  98. - It's got money behind it
  99. - Small
  100. - Optimized for interactive use
  101. Disadvantages:
  102. - Not finished yet
  103. - C
  104. - Complex hack around the fact that C is a low-level language
  105. * libart_lgpl (http://www.levien.com/libart/)
  106. Libart isn't really an image library, but rather a canvas that can be
  107. used to paint images on. It is optimized for vector graphics, and is
  108. used by Karbon to render shapes before display.
  109. Advantages:
  110. - Raph Levien is really good at this stuff, so libart is
  111. quality
  112. Disadvantages:
  113. - C
  114. - It isn't an image library, really
  115. * java2D (http://java.sun.com/j2se/1.4.2/docs/guide/2d/index.html)
  116. Java2D is more or less complete library to write a paint app around.
  117. It offers image types, colour spaces, kernel convolutions and text.
  118. It's in Java, of course, and the free re-implementation is not done
  119. yet, and besides, is based around Cairo.
  120. Advantages:
  121. - Neat OO design
  122. - Complete
  123. Disadvantages:
  124. - Java
  125. - Not free
  126. - Has some legacy cruft.
  127. * ImageMagick/GraphicsMagick (http://imagemagick.org/, http://www.graphicsmagick.org/)
  128. GraphicsMagick is ImageMagick with a different license, and a
  129. focus on API stability. GM and IM now also differ slightly in terms of
  130. features offered. Chalk used to be based around IM (which can still be
  131. seen in many places in the code). The IM core was dropped in favour of
  132. the present core because it turned out that IM was not re-entrant,
  133. making it hard to use in an interactive application.
  134. Advantages:
  135. - Mature
  136. - C++ interface
  137. - Full-featured
  138. - RGB and CMYK (but not more)
  139. - License compatible with Chalk
  140. - Under active development
  141. Disadvantages:
  142. - Bit-depth a compile-time option
  143. - Not re-entrant: not optimized for interactive use.
  144. * Paintlib2 (http://www.paintlib.de/paintlib/)
  145. A portable (windows/Linux) library for image loading, manipulation and
  146. saving. The same kind of thing as IM/GM, but not quite as mature.
  147. Advantages:
  148. Disadvantages:
  149. - No support for larger bit depths per channel
  150. - Windows (bmp) centric
  151. - Development seems to have stopped in 2000
  152. * Antigrain (http://www.antigrain.com/)
  153. Antigrain is a graphics lib that specializes in high-quality anti-aliasing. It can be
  154. useful to mine for algorithms, but is mainly a library to render vector data to bitmaps,
  155. just like libart or cairo.
  156. Advantages:
  157. - High quality algorithms
  158. - Completely free license.
  159. - Colour-space agnostic
  160. Disadvantages:
  161. - Not a complete 2D library
  162. - self-admittedly complex and hard to use.
  163. - No support for greater bit-depths.
  164. * The Visualization Toolkit (VTK, http://public.kitware.com/VTK/)
  165. A very big C++ library for 2d and 3d image processing and visualisation. It's
  166. too big to easily evaluate for me.
  167. Advantages
  168. - It is used in other Qt applications, like Julius
  169. - Probably very good
  170. Disadvantages
  171. - The book is very expensive
  172. - Uses its own make equivalent, CMake
  173. - Very large
  174. * Java Advanced Imaging