views:

10459

answers:

17

I would love find out which is the best image manipulation library for which platforms and languages. Likely you could use a library under multiple platforms with the right API or Plugin capabilities. I'm specifically looking for web based applications, but please answer for desktop apps as well if you like.

Libraries (and the common direct language support):

Also suggested:

Yuval Peled - Intel's new Intel® Integrated Performance Primitives for image processing.

rics - RoboRealm has list of vision software.

Thanks for the suggestions!

+8  A: 

Disclaimer: I work for Atalasoft

For .NET applications, Atalasoft DotImage is written from the ground up for .NET (doesn't use COM Interop or non-assembly dlls), has 150+ different image processing commands, AJAX-based web viewing components, and run-time royalty-free licensing for desktop applications.

Lou Franco
I have used GDI+, Aforge.Net, ASPJpeg and Atalasoft. Aside from the pricing (and licensing setup awkwardness) Atalasoft is seriously tops!
jessegavin
For common photo formats, image processing, and WinForms viewing we now offer DotImage Photo for free http://www.atalasoft.com/photofree
Lou Franco
+1  A: 

I'm a big fan of AForge.Imaging (http://code.google.com/p/aforge/)

It has a lot of low-level image processing, is relatively fast and free. Does use unsafe code, though.

Andrew Queisser
+9  A: 

What do you want to do?
If you want low level image processing ( as in finding objects, tracking motion etc) then OpenCV, it's free and open and the algorithms are well reviewed.
If you want to be able to read lots of proprietry formats - probably python image library

Martin Beckett
+1  A: 

Another good library with high performance is Intel's IPL - Image Processing Library. I used it. I think it has only a C language interface. It provides many algorithms and data manipulations. And you can checkout the LeadTools that is commonly used in medical companies for medical CT/MR images processing. This one has .NET interface as well.

Yuval Peled
I'm pretty sure this is the basis of OpenCV. Isn't it?
kenny
+10  A: 

For Python, don't bother with PythonMagick. It's no longer maintained (afaik).

Instead, try the Python Imaging Library.

Matt Schmidt
+6  A: 

While I love imageMagick it's been usurped by a fork called GraphicsMagic which is a multi threaded and signaficantly faster. It's not as popular but IIRC it's currently in use in production for livejournal or one of the other large blogging sites.

I also know ubuntu has a compatibility package that offers a drop in command line replacement of imagemagic with graphicsmagick.

wizard
+2  A: 

For C++ apps I would use CxImage, now at v6:

http://www.xdp.it/cximage.htm

Brilliant library.

Rob
+4  A: 

I have used LeadTools in the past, as well as Pegasus. We found a bug with their (Pegasus) library and they took forever to fix it and then when they did, they put it in a new version and were going to force us to upgrade to the new version. we went to find other librarys.

We are now using Atalasoft dotImage. We have run into some issues, one is bug we are waiting on fix for, the other they quickly helped me work around the issue. we are finding the AJAX thumbnail viewer and AJAX viewer are quite powerful, getting them to work in our application is tricky. I do like their library it is easy to use and quite well written and designed.

Their licensing on the other hand is quite expensive for servers, and devs. We had a PITA getting a license for a second developer so that he could dev and test the rest of the site (not the imaging part I work on). They wanted full dev seat even though he wasnt doing any image dev work. The server licensing is per core and then each addon is extra. It seems like they "nickle and dime" (VERY loose terms as we are talking hundreds to thousands not nickle and dime)

So in conclusion I would say if you are doing desktop app, definately go with Atalasoft, but anything server based, check into the pricing carefully. And Pegasus I would avoid due to their poor support and cust service, and they are harder to work with than Atalasoft. LEADTools was OK from what I remember but it was 2000-2004 when I really worked with it. And those are the only 3 I have really used and all in .Net

MikeScott8
Lou Franco
(I am not from Atalasoft) I agree with MikeScott8's assessment of each of these libraries - he's spot on. And while Atalasoft's library is the best of what, I feel, is a bad lot it's quite expensive, especially for a small shop like mine.
Bob Mc
+2  A: 

My main experiences are with processing video streams.

I have used Intel Performance Primitives when writing c++ code and found it to be good. But this was back when it was free.

For writing C# .net stuff I have tried:

AForge - has a lot of functions but uses the Bitmap object for passing image data which makes it too slow for processing a video image. This is going to be changed in the future.

Emgu - is a wrapper around OpenCV. Has most of the OpenCV functions, takes a pointer to the image as an argument, as both an Image class and a CvInvoke class so you have the option of using the image object or just invoking the desired openCV function. Also easy to add OpenCV functions that are not already implemented.

geometrikal
A: 

For old-style CGI programs that were actual shell scripts back in time, I used netpbm. It's not really a library but a toolkit of programs that you can chain together through pipes (or temporary files) to do all sorts of image manipulations. It uses an ASCII based intermediary format that you can actually edit with a text editor.

unbeknown
+1  A: 

RoboRealm compiled a huge list of vision software.

rics
A: 

ImageMagick will definitely produce really sharp images, but it's not easy to install or manage. ImageMagick itself needs to be installed on the server, and then a compatinble version of MagickWand needs to be installed.

I've also found that it has a habit of creating massive temporary files of up to a GB or more and then dumping them into your /tmp directory, which you need to be careful of. It will also eat up a massive amount of memory unpredictably.

If you're working on a platform with plenty of memory, and don't need to worry about nuking your temp directly, ImageMagick is a good choice.

Chris Henry
A: 

Depends on your environment. For .NET development, either ImagXpress or ImageGear, both by Accusoft Pegasus.

The acquisition of Accusoft by Pegasus Imaging Corp. made it by far the largest provider of imaging SDKs.

ImageGear is also available in DLL form for C/C++ development. Both ImageGear and ImagXpress are available for ActiveX/COM development.

ImageGear also offers a Java toolkit.

For the fastest possible native image manipulation, PICTools is the optimal choice.

A: 

Yet Another Disclaimer: I work for Aurigma.

Graphics Mill for .NET is a great SDK to develop apps with image processing functionality. It's available for x86-32 and x64 platforms. It's well-documented and has online technical support.

A: 

Well, when I get to use Delphi, Graphics32 is a joy to use.

Leonardo Herrera
A: 

The CImg Library is an open source, C++ toolkit for image processing, http://cimg.sourceforge.net/ current version is CImg 1.3.4

JKS
A: 

Matlab.

I have worked with OpenCV (also a great option) and a little with PIL (Python Imaging Library), but Matlab provides a much more complete range of image processing/image manipulation functions. Also, the documentation that is provided is just great.

Also, note that it is possible to convert your Matlab code to C (by linking to libraries provided with the software) if you have to integrate it with your C application.

Alceu Costa