4

I am currently looking for an open source alternative to the Java Advanced Imaging API. I need a plugin for the javax.imageio package, and I need the functionalities that would other be in the JAI. At the very least, I need to be able to read and write files in the .tiff image format. It would be nice to have capabilities in other formats as well, such as the .svg format, or even the .psd and .icns formats.

I'm not keen on the JAI since it's a proprietary piece of work, and I am trying to make my application open source. It's also not updated, and there are many bugs associated with it.

It also needs to carry a permissive license, or a license that does not hold a copyleft clause, thus rendering something like the GPL out. Ideally, it should hold either the Apache or MIT licenses.

  • 4
    You should edit your question and convert your list of requirements to a numbered or bulleted list in order of importance. You should also say why you don't want to use the JAI. – unforgettableid Aug 28 '15 at 2:26
  • @unforgettableid That really isn't relevant here... If I'm looking for an open source program, it should be fairly clear I don't want the JAI anyways... – Zizouz212 Aug 31 '15 at 22:37
2
+100

When taking a stab at searching for good image libraries, I found some rather old threads, and came up with some contenders which seems to keep on living and having different strengths:

OpenImaj

OpenIMAJ is an award-winning set of libraries and tools for multimedia content analysis and content generation. OpenIMAJ is very broad and contains everything from state-of-the-art computer vision (e.g. SIFT descriptors, salient region detection, face detection, etc.) and advanced data clustering, through to software that performs analysis on the content, layout and structure of webpages.

... The library is available as a modular set of Jars and the source is freely available under a BSD-style license. If you use OpenIMAJ for academic work, we'd appreciate it if you reference us. To get started quickly with OpenIMAJ, we recommend you try the tutorial. For more information about installing the source code, integrating the jars with your java project or using the command line tools please consult the documentation menu above. The blog shows some cool examples of things we've been doing with OpenIMAJ and ImageTerrier.

Benefits, it has a licence which is usable also commercially, and it is written directly in java. However it seems like the documentation is somewhat messy, and I couldn't really find what image formats it supports or not. But you might have better luck finding your intended functions and requirements

JavaXT.io.Image

About the image part of the library:

The javaxt.io.Image class is designed to simplify reading, writing, and manipulating image files. Here are a couple simple examples of how to open, rotate, crop, resize, and save image files. Please refer to the JavaDocs for a full list of methods.

On the license issue:

JavaXT is an open source project released under an MIT License. Feel free to use the code and information found here as you like. This software comes with no guarantees or warranties. You may use this software in any open source or commercial project.

This is maybe the most promising library, but it does handle quite a lot more than just image stuff. Not sure if you can just install the image part of it, or not.

FreeImage

Regarding the library it self:

FreeImage is an Open Source library project for developers who would like to support popular graphics image formats like PNG, BMP, JPEG, TIFF and others as needed by today's multimedia applications. FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit or 64-bit versions of Windows, and cross-platform (works both with Linux and Mac OS X).

Thanks to it's ANSI C interface, FreeImage is usable in many languages including C, C++, VB, C#, Delphi, Java and also in common scripting languages such as Perl, Python, PHP, TCL or Ruby.

This is not a pure java library, and you need to interface it. However it does provide a lot of the features and file formats you are looking for. A partial interface, maybe dated, can be found in freeimage4j. If not updated, it should/could provide a base for your new interface.


From the image perspective it seems like FreeImage might be your best bet, but you might have difficulties interfacing it. OpenIMAJ might have what you need, but I couldn't find my way through the documentation. JavaXT.io.Image, does seem to have it, but you might a lot else as well.

  • Not sure about this, but wouldn't be better to have one answer per recommandation so that the best one gets to top? – Cristian Ciupitu Sep 2 '15 at 20:04
  • 1
    @CristianCiupitu, I would normally indeed post these as separate answers, but they are closely related whilst focusing on different aspects of request. – holroy Sep 2 '15 at 20:06
  • These look great! They definitely do give you a lot! – Zizouz212 Sep 3 '15 at 13:51
  • Thank you so much! I've found something else which I'm going to post as an answer, but these were definitely helpful, and I'm going to likely use it for my app in later releases. :D – Zizouz212 Sep 4 '15 at 13:15
  • Regarding OpenIMAJ, I found the api docs here ... seems that they have a new website with all that info here – DarkCygnus Feb 28 at 17:13
2

Disclosure: I'm the main author/maintainer of the suggested library, but it seems to be a very good match for what the question asks.


TwelveMonkeys ImageIO

This project contains a large collection of plugins and extensions for Java's ImageIO (the javax.imageio package), and is all written in Java (no native builds or installs necessary).

These plugins extends the number of image file formats supported in Java, using the javax.imageio.* package. The main purpose of this project is to provide support for formats not covered by the JRE itself.

  • Especially, it has a TIFF plugin with read and write support. One of the goals for the TIFF plugin, is to be a direct replacement for the JAI TIFF plugin. This means it supports most of the same read and write parameters, and uses the same native metadata format. This should make the migration from JAI especially easy. It also supports various flavors of TIFF the JAI version does not.

  • The project has read support for ICNS and PSD formats, and using the 3rd-party library Batik, it even provides support for the SVG format through the javax.imageio API. The project has additional read support for multiple other formats as well, like PNM, PICT, SGI and TGA.

  • Finally, the project is distributed under a very friendly BSD-style open source license, allowing it to be used in both open source and commercial products.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.