Skip to content

eclipse-imagen/imagen

ImageN

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:

Maven Build

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

Supported Java Environment

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

Release

Prep:

  1. Locate Release Milestone for the release

  2. Apply this milestones to Issues and PRs included in the release.

  3. Prepare Release Notes:

    • Record significant changes
    • Enter date of release
  4. For minor release we are okay to proceed without formal review.

  1. For major release start eclipse release process

    Example JTS 1.17.0-release-review page.

    This takes about 2 weeks, schuedled for 1st and 15th each month.

Update artifacts:

Update Artifacts

On main:

  1. Before you start check that the Maven build executes with no errors using JDK 11:

    sdk use java 11.0.27-tem
    
  2. Update version number in Maven POMs (run the Maven versions plugin at project root):

    mvn versions:set -DgenerateBackupPoms=false -DnewVersion=0.4.0
    
  3. Commit this change.

    git add .
    git commit -m "Release version 0.4.0"
    git push
    
  4. 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.

Create Release Artifacts

  1. Before you start double check that you have gpg installed and configured, with your public key distributed.

    References: Working with PGP Signatures

  2. 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

  3. Execute the final Maven release build which will sign jars:

    mvn clean install -Drelease
    

Deploy the Release

  1. 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

  2. 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.

  3. Create a GitHub release

  4. Navigate to https://github.com/eclipse-imagen/imagen/releases and use "Draft new Release" based on your tag.

  5. Copy the release notes:

    Example: [0.4.0](tps://github.com/eclipse-imagen/imagen/releases/tag/0.4.0]

  6. 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
  1. Tip: Mark as a draft release (until Eclipse review process completes)

Post release

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
  1. Compile to test, and commit this change.

    mvn clean install
    git add .
    git commit -m "Version 0.9.0-SNAPSHOT"
    git push
    

Announcing

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 8