The Eclipse ImageN project provides an extensible, on-demand image processing library with no artificial restrictions on raster size or number of bands.
ImageN provides:
- High performance Pure Java Image Processing
- Clear image processing operations, allowing installations to use native libs to accelerate processing if available
- On demand processing of large raster content staging tiles in memory for parallel processing
- No artificial limitation on raster size or number of bands to support multi-spectral imagery
Long term continuation of JAI and JAI-Ext:
- Migration refactoring planned
- Modernize Java API planned
This is a Eclipse Foundation open source project using the Apache License v 2.0.
For more information:
-
ImageN Project - Eclipse Project Page
-
Replace JAI - GeoTools Wiki
Use maven to build on the command line:
mvn install
The build uses the javac
compiler argument -XDignore.symbol.file
to reference JDK codecs directly. This functionality is only available from the javac
command line and requires maven (or your IDE) to fork each call to javac
.
Maven build QA modules (both are applied transparently during the normal build, use manually if needed):
mvn sortpom:sort
mvn spotless:apply
Building with Jacoco aggregate code coverage:
mvn clean install -Pjacoco
<your_browser> modules/all/target/site/jacoco-aggregate/index.html
The ImageN codebase is in the process of being migrated from a Java Extension to a jar compatible with Java "jigsaw" module system.
module | OpenJDK 11 | OpenJDK 17 | OpenJDK 21 |
---|---|---|---|
modules | compiles | compiles | compiles |
unsupported | compiles | compiles | compiles |
legacy | compiles | compiles | compiles |
legacy/codec | compiles | compiles | compiles |
If using an unsupported environment:
COMPILATION ERROR :
TIFFImage.java:[59,31] error: package com.sun.image.codec.jpeg does not exist
Prep:
-
Locate Release Milestone for the release
-
Apply this milestones to Issues and PRs included in the release.
-
Prepare Release Notes:
- Record significant changes
- Enter date of release
-
For minor release we are okay to proceed without formal review.
- Email imagen-dev@eclipse.org that release is stated
- Use text from release notes to describe the release
-
For major release start eclipse release process
Example JTS 1.17.0-release-review page.
- Use text from release notes to describe the release
- Email review page to imagen-dev@eclipse.org for aproval
- Email review page emo@eclipse.org when ready, to save time link to the imagen-dev email approval thread
- EMO opens a bug ticket like this to track progress
This takes about 2 weeks, schuedled for 1st and 15th each month.
Update artifacts:
On main:
-
Before you start check that the Maven build executes with no errors using JDK 11:
sdk use java 11.0.27-tem
-
Update version number in Maven POMs (run the Maven versions plugin at project root):
mvn versions:set -DgenerateBackupPoms=false -DnewVersion=0.4.0
-
Commit this change.
git add . git commit -m "Release version 0.4.0" git push
-
Tag this commit, and push the tag to GitHub.
git tag -a 0.4.0 -m "Release version 0.4.0" git push --tags
This is the commit that will form the GitHub release below.
-
Before you start double check that you have
gpg
installed and configured, with your public key distributed.References: Working with PGP Signatures
-
The
gpg-agent
will remember a passphrase for a short duration.To interact with the agent (so it asks you the passphrase):
gpg --use-agent --armor --detach-sign --output - pom.xml
Reference: Configuring GPG/PGP for Maven Releases to Sonatype on Mac OS X
-
Execute the final Maven release build which will sign jars:
mvn clean install -Drelease
-
Deploy to Maven Central, using credentials in your
~/.m2/settings.xml
:<server> <id>central</id> <username>generated_user</username> <password>generated_password</password> </server>
Reference: Publishing By Using the Maven Plugin
-
Deploy to Maven Central with the release property and profile
mvn deploy -Drelease
A successful deploy will verify, and then wait for you to publish:
Deployment 9590fb21-a026-4451-9722-a7216b258f4d has been validated. To finish publishing visit https://central.sonatype.com/publishing/deployments
Check the artifacts work as expected before manually publishing.
-
Create a GitHub release
-
Navigate to https://github.com/eclipse-imagen/imagen/releases and use "Draft new Release" based on your tag.
-
Copy the release notes:
Example: [0.4.0](tps://github.com/eclipse-imagen/imagen/releases/tag/0.4.0]
-
Add release artifacts (from the
target
folders):
* modules/all/target/imagen-all-0.4.0.jar
* legacy/all/target/imagen-legacy-all-0.4.0.jar
- Tip: Mark as a draft release (until Eclipse review process completes)
Update main to the next release version:
1Update version number in Maven POMs (run the Maven release plugin at project root:
mvn versions:set -DgenerateBackupPoms=false -DnewVersion=0.9.0-SNAPSHOT
-
Compile to test, and commit this change.
mvn clean install git add . git commit -m "Version 0.9.0-SNAPSHOT" git push
- Message to imagen-dev@eclipse.org
- Comment on Matrix channel
- Social media?
- Others?