Shimaging is a Java Swing image visualization library with reusable widgets and image sources for TIFF and common ImageIO formats.
- Java 21+
- Maven 3.6+ if you are not using the Maven Wrapper
The repository includes the Maven Wrapper, so a separate Maven installation is optional.
On first use, ./mvnw downloads the pinned Maven distribution automatically.
This project is configured to publish Maven artifacts to GitHub Packages.
- The workflow at
.github/workflows/publish.ymlruns on pushes tomainandfeature/**. - On
main, it publishes the base release version from<revision>(with-SNAPSHOTremoved). - On
feature/**, it publishes a-SNAPSHOTversion. - Repository permissions required:
packages: write.
This repository now follows the same style as gerb4j:
.devcontainer/devcontainer.jsonuses Java 21 + Maven 3.9.9 and preloads dependencies..github/workflows/ci.ymlruns./mvnw -B verifyin a devcontainer-based job..github/workflows/devcontainer.ymlprebuilds and pushesghcr.io/bvarner/shimaging-devcontainer..github/workflows/javadoc.ymlgenerates Maven site output and deploys it to GitHub Pages..github/workflows/publish.ymlpublishes Maven packages from devcontainer-based CI.
Create ~/.m2/settings.xml with a github server entry:
<settings>
<servers>
<server>
<id>github</id>
<username>YOUR_GITHUB_USERNAME</username>
<password>YOUR_GITHUB_TOKEN</password>
</server>
</servers>
</settings>Then deploy:
./mvnw deployAdd this repository to the consuming project's pom.xml:
<repositories>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/bvarner/shimaging</url>
</repository>
</repositories>Add this dependency:
<dependency>
<groupId>com.varnernet.shimaging</groupId>
<artifactId>shimaging</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>The consumer also needs credentials in ~/.m2/settings.xml with a matching server id (github) and a token that has at least read:packages.
For local publishing, use a token with write:packages.
The static documentation site lives in docs/ and is intended to be published with GitHub Pages.
For a repository-hosted GitHub Pages site, configure:
- Source: Deploy from a branch
- Branch:
main - Folder:
/docs
The docs/ directory includes a .nojekyll marker so the site is served as plain static content.
./mvnw clean packageThis produces a shaded executable jar at target/shimaging-1.0.0-SNAPSHOT.jar.
Run from Maven:
./mvnw exec:javaRun the primary test app directly:
java -jar target/shimaging-1.0.0-SNAPSHOT.jarRun the composite TIFF demo app:
java -cp target/shimaging-1.0.0-SNAPSHOT.jar com.varnernet.shimaging.CompositeTiffTestApp./mvnw test- Multi-page TIFF support via ImageIO + TwelveMonkeys TIFF plugin
- View controls: zoom, fit, rotate, brightness, contrast, invert
- Composite layering support for advanced render scenarios
- Swing-based image panel with toolbar and keyboard shortcuts
docs/ GitHub Pages static documentation site
src/main/java/ Source code
src/main/resources/ Resources (icons, etc.)
src/test/java/ Unit tests
TestImages/ Sample image files for manual/demo usage
target/ Build output
See LICENSE.TXT.