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 [email protected] 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 [email protected] for aproval
- Email review page [email protected] 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.9.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 --tagsThis is the commit that will form the GitHub release below.
-
Before you start double check that you have
gpginstalled and configured, with your public key distributed.References: Working with PGP Signatures
-
The
gpg-agentwill 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.xmlReference: 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 repo.osgeo.org:
mvn deploy -DskipTests -DskipTestsOutdated: Deploy to Maven Central with the release property and profile
mvn deploy -Drelease -DskipTestsA 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/deploymentsCheck 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]
You may also wish to hit "generate release notes".
-
Add release artifacts (from the
targetfolders):
* 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:
-
Update 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 [email protected]
- Comment on Matrix channel
- Social media?
- Others?
