Skip to content

Releases: tim-janik/imagewmark

Imagewmark 0.5.0

22 Jul 15:30

Choose a tag to compare

Imagewmark Version 0.5.0 is Now Available

Imagewmark is a free software tool for adding encrypted, invisible digital
watermarks to images. These watermarks can be robustly extracted from cropped,
scaled, or compressed versions of the image using the same encryption key,
enabling blind decoding without needing the original image.

Over the recent months, Imagewmark has evolved from an initial proof of concept
to a robust tool. Major features introduced include AES key dependent watermark
encoding, forward error correction via convolutional codes and an advanced
distortion resilient non-blind decoding method.

Disclaimer: Future versions of Imagewmark may introduce changes to the
watermark encoding format. This means that watermark data encoded with a newer
version may not be decodable by older versions, and vice versa. For best
compatibility, use the same MAJOR.MINOR version of Imagewmark for both
encoding and decoding.

This release focuses on proper installation, improves documentation,
reliability and robustness. Helpers are provided to test and create reports
for the performance of Imagewmark on an entire battery of tests.

While our releases are currently source-only, we are actively seeking user
feedback to guide future development. In particular, we are interested in
understanding your preferred binary distribution formats, whether deb or
rpm packages, Alpine APK, AppImage, pre-built Docker images, or any other
formats, please let us know in GitHub issues or via email.

The source code is available here:

https://github.com/tim-janik/imagewmark

The README.md file includes step-by-step build and usage instructions, while
the Dockerfile allows quick, reproducible builds in isolated environments.

Imagewmark 0.5.0:

Added:

  • Added the --cornersync=<on|off|auto> option to control the corner sync algorithm during extraction
  • Added developer documentation, including a description of the architecture
  • Added a manual page to the documentation (imagewmark.1)
  • Added a new tests/README.md to provide an overview and usage instructions for test runs
  • Added information about test image datasets to the test documentation
  • Added an Alpine CI workflow for automated builds and checks using GitHub Actions
  • Added an IRC bot for CI build status notifications
  • Added unit tests to verify basic functionality before/after installation
  • Added new script (gen-tests-mk) that creates out-of-tree test suites of custom sizes
  • Added support to utilize all CPU cores when running test batteries
  • Added specific tests for high-resolution images and downscaling attacks

Breaking:

  • We now read all images with OpenCV instead of PIL, this potentially changes the set of supported images
  • We assume OpenImageIO/imageio.h and gcrypt.h header files are present
  • Dependencies: libgcrypt20-dev libopenimageio-dev libopencv-dev
  • Watermark encoding has changed in the 0.5.0 version due to PRNG enum modifications
  • We now build PDF versions of the docs only if pdflatex is installed

Changed:

  • Improved test realism by randomizing attack resolutions and shuffled input image selection
  • Enhanced test reproducibility with improved and deterministic seeding mechanisms
  • Moved all C++ source code into a dedicated cxx/ directory
  • Better error handling in build scripts, with improved logging for debugging
  • Major overhaul of the build system with unified Makefiles and improved dependency handling
  • Fixed various bugs in the build system and C++ code
  • Introduced installation check and uninstallation rules (make install, installcheck, uninstall, distcheck)
  • Migrated version handling to a shell script with git integration
  • Fixed image reading to properly handle subimages and miplevels
  • Added check that secret key files are only readable by the user
  • We support parallel installations of different major.minor versions

Removed:

  • Removed unused OpenCV configure script
  • Removed auto config, compile sources in subdir

Contributors

Thanks to everyone who made this release happen!

For full details, see the commit history