The ImageIO-Ext is an Open Source project that provides extensions, fixes and improvements for the standard Oracle Java Image I/O project such as:
- Support for the GDAL I/O library
- Support for reading/writing JPEG2000 files with Kakadu
- Improved support for reading/writing tiff files
- A Reader/Writer for JPEG images based on the libjpeg-turbo open source high performance library. More info can be found here
- A NITF plugin based on NITRO. More info can be found here
- A new PNG Writer with improved performances. More informations can be found here.
The ImageIO library provides support for encoding/decoding raster formats in Java. Some useful documentation on ImageIO can be found here.
See the documentation below for more information on the ImageIO-Ext project.
Current stable release is 1.3.2. Check this page for additional information on how to download artifacts and binaries.
We have created two public mailing lists for ImageIO-Ext one for Developers and one for Users, you can find their homepages here below:
We welcome contributions in any form:
- pull requests for new features
- pull requests for bug fixes
- pull requests for documentation
- funding for any combination of the above
Here below you can find links with useful information for working with ImageIO-Ext.
When using ImageIO-Ext with Java 17, you need to add the following JVM arguments to access internal Java modules that the library requires:
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.desktop/java.awt.image=ALL-UNNAMED
--add-opens java.desktop/javax.imageio.stream=ALL-UNNAMED
--add-opens java.desktop/javax.imageio=ALL-UNNAMED
--add-exports java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED
--add-exports java.desktop/com.sun.imageio.plugins.png=ALL-UNNAMED
Running your application:
java --add-opens java.base/java.lang=ALL-UNNAMED \
--add-opens java.base/java.util=ALL-UNNAMED \
--add-opens java.desktop/java.awt.image=ALL-UNNAMED \
--add-opens java.desktop/javax.imageio.stream=ALL-UNNAMED \
--add-opens java.desktop/javax.imageio=ALL-UNNAMED \
--add-exports java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED \
--add-exports java.desktop/com.sun.imageio.plugins.png=ALL-UNNAMED \
-cp your-classpath YourMainClass
Running tests with Maven:
The project automatically handles these JVM arguments when building with Java 9+ through the jdk-9-plus
profile in the root POM, so you can simply run:
mvn test
If you need to override or add additional JVM arguments for tests, you can use:
mvn test -Dsurefire.jvm.args="your-additional-args"
These arguments are required because ImageIO-Ext accesses internal Java APIs that are encapsulated by the module system introduced in Java 9+.
In case you want to enable ECW Decode support, it is mandatory you agree with the ECW Eula. Moreover if you want to support ECW Decode in a Server application you need to BUY a license from ERDAS.
ImageIO-Ext is released partly under LGPL license partly under the BSD license (namely, derivative work from imageio source code). Refer to the code tree for more information.
ImageIO-EXT has been developed by GeoSolutions as an internal effort to provide extensions, fixes and improvements for the standard Oracle Java Image I/O project