Skip to content

Releases: vlad-salone/rimage

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 08:41
e03bc23

Breaking Changes

  • append the output suffix directly WITHOUT an automatic @ separator (-s 2x now yields file2x.jpeg) and update the CLI help accordingly
  • accept a UTF-8 file.list as an input file list, with one file path per line (blank lines are skipped, surrounding whitespace is ignored, and relative paths are resolved against the current working directory); when a file.list is provided, all other input file arguments are ignored

Features

  • expand glob patterns in input paths on all platforms (previously Windows-only), preferring existing literal paths
  • add 100l and 100s resize values that anchor on the longest or shortest side of each image
  • add --reduce-only and --enlarge-only as aliases for --no-upscale and --no-downscale

Bug Fixes

  • reject malformed width and height --resize values such as 1.5w or abc100w instead of silently extracting the first run of digits
  • map each chained --resize value from the size the previous resize left behind, so a chain composes instead of every value mapping the original dimensions
  • fix a deadlock with a single-threaded pool by acquiring the concurrency permit inside the worker, and return an error instead of panicking when the thread pool cannot be created
  • write outputs atomically through unique temporary files and publish them by rename, with a recoverable swap when replacing existing files on Windows
  • detect collisions before any processing: duplicate output mappings, outputs overwriting another input, metadata path conflicts, and output paths identical to --backup paths (path names are treated as case-insensitive on every platform as a fail-safe default, covering case-insensitive Linux mounts, and aliases are resolved through canonicalization for existing paths)
  • never overwrite or delete an existing --backup file; create backups via hard link with a no-clobber copy fallback and remove the original input only after a successful publish
  • normalize input paths without canonicalization so symlinked directory layouts are preserved, and reject output parents that resolve outside the output root
  • return non-zero exit codes when no inputs are found, an encoder fails, a collision is detected, files fail, or metadata cannot be written
  • fix WebP animation encoding by warning and encoding only the first frame; compute per-frame durations from timestamps in the decoder
  • guard against empty frame lists in the AVIF, MozJPEG, OxiPNG and WebP encoders instead of panicking
  • restrict MozJPEG to 8-bit output and fix OxiPNG 16-bit endianness for non-RGB colorspaces
  • apply ICC profiles to 16-bit frames without panicking and preserve frame timing metadata
  • prevent integer overflow panics in quantization and resize, and surface resize worker panics as errors

Improvements

  • validate suffixes and output file names (including Windows reserved names) up front, reject recursive inputs without a common root and duplicate output mappings with clear errors
  • write JSON metadata atomically and use saturating arithmetic for size and space-saved statistics
  • add end-to-end regression tests covering single-thread processing, recursive output layouts, backup collisions, existing-backup protection and non-zero exit codes
  • regenerate the AVIF test fixture
  • update install steps of dependencies for building on Windows

Dependencies

  • bump zune-imageprocs to 0.5.1 (stable) and regex to 1.13
  • bump jxl-grid to 0.6.2, jxl-oxide to 0.12.6, log to 0.4.33, indicatif to 0.18.6, anyhow to 1.0.103 and serde_json to 1.0.150
  • replace winres with winresource 0.1.31 and make glob a general dependency
  • pin ravif 0.13.0 without default features for aarch64-unknown-linux-musl

Build / CI

  • rewrite the CI workflow: build and test on main and dev, Ubuntu 24.04 / Windows 2025 / macOS 15 runners, cross builds for aarch64-unknown-linux-musl with a pinned image, qemu runner for aarch64 Linux, actions/checkout@v7, concurrency grouping and read-only permissions
  • use yasm for the libaom build, fix artifact download errors and silence Homebrew tap warnings on macOS
  • remove the config.toml pre-release override and set the Windows pre-release version in build.rs

v0.12.4

Choose a tag to compare

@github-actions github-actions released this 23 May 19:06

0.12.4 (2026-05-23)

Breaking

  • Change default --thread option to 1 to prevent memory allocation failed error in default settings.

Features

  • robust path normalization and bounded concurrency to prevent OOM on large images (4b030da)
  • add FinishGuard to manage progress bar updates on drop (c5a3bf0)

Bug Fixes

  • critical bug fixes across codecs and operations: replace unreachable!() with proper errors, fix crashes on non-existent paths and missing file stems, fix animated image channel count, fix webp loop_count, fix UNC path corruption on Windows, fix race condition in little_exif error suppression (fccd4e2)
  • prevent DCT overflow with proportional smoothing for high-quality custom quantization tables (e653b40)
  • correct channel length calculation in quantization process (f6eb26d)
  • retain permit in concurrent image processing for proper resource management (fb76593)

Improvements

  • use log module to submit log infos (729c65d)
  • refactor path normalization tests for platform compatibility (77b5698)

Dependencies

Build / CI

  • update GitHub Actions configs, bump dep versions, fix aarch pkg update config (1685073)
  • update workflow to suppress Node.js 20 deprecation warning and re-fix Mac build (6fe07fa)
  • specify shell for Windows dependency installation (facc4c0)

v0.12.3

Choose a tag to compare

@github-actions github-actions released this 29 Jan 15:26

0.12.3 (2026-01-29)

Bug Fixes

  • fix icc test error (e82055d)
  • simplify image flattening in quantization operation (0d32374)
  • update unreachable pattern to use std::prelude::v1::None (b0d9a41)

v0.12.2 (2026-01-20)

Bug Fixes

  • disable wasm32 build due to unresolved issues (41c3b1e)
  • suffix's docs conflict with code (c1c0a44)
  • fix DCT overflow manually set smooth arg to fix that (75f2cf7)
  • add icc to the build-binary feature to fix compilation errors (c28be02)
  • suppress little_exif images without EXIF (58495bc)
  • re-fix deprecated rename ravif::ColorSpace to ColorModel (a1e482f)

v0.12.1

Bug Fixes

  • cli: πŸ› fixed a bug when little exif panics on png images (159bbab)

v0.12.2

Choose a tag to compare

@github-actions github-actions released this 20 Jan 21:04

v0.12.2 (2026-01-20)

Bug Fixes

  • disable wasm32 build due to unresolved issues (41c3b1e)
  • suffix's docs conflict with code (c1c0a44)
  • fix DCT overflow manually set smooth arg to fix that (75f2cf7)
  • add icc to the build-binary feature to fix compilation errors (c28be02)
  • suppress little_exif images without EXIF (58495bc)
  • re-fix deprecated rename ravif::ColorSpace to ColorModel (a1e482f)

v0.12.1

Bug Fixes

  • cli: πŸ› fixed a bug when little exif panics on png images (159bbab)

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 08 Aug 12:58

v0.12.1

Bug Fixes

  • cli: πŸ› fixed a bug when little exif panics on png images (159bbab)

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 12:37
96fec5a

v0.12.0

Bug Fixes

  • cli: πŸ› updated exif codecs support (73566cc)
  • cli: ✨ added support for exif metadata in supported files (373b074)
  • codecs: πŸ’₯ removed support for exif in some of the codecs due to kamadak exif issues (939a79e)
  • codecs: πŸ”Š added warning about metadata (b1156e1)

Features

  • cli: ✨ added --strip option (b6da8d6)
  • cli: ✨ added downscale and upscale flags to resize pipeline (75cbd03)
  • cli: ✨ added metadata output to cli (d7ccfe8)
  • codecs: πŸ› added write icc profile into encoders (e7770e7)

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 15 Apr 20:44

v0.11.0

Breaking Changes

  • Complete rewrite of the library β€” now built to work alongside zune-image.
  • CLI interface fully redesigned for more flexibility and cleaner structure.

Performance Improvements

Massive speedup: up to 149x faster in parallel processing compared to v0.10.3.

Performance benchmarks indicate:

  • ~14x faster than rimage-0.10.3 on single image operations.
  • ~15x faster than squoosh-cli.
  • ~149x faster on bulk image processing.

Features

  • cli: New progress bar and updated display styles.

  • cli: Added --quiet and --no-progress flags.

  • cli: Reshape resize parameter format: now supports w<value> and h<value>.

  • cli: Added CLI warnings for invalid input files.

  • cli: Improved argument parsing and error messages.

  • cli: Alpha premultiply preprocessor added.

  • cli: Support for apply icc profile operation.

  • cli: Restructure of base CLI options, codecs, and preprocessors.

  • codecs: Added TIFF support.

  • codecs: Added EXIF write support for JPEG and PNG.

  • operations: Added new fast resize operation with threading support.

  • operations: Added ICC profile application with multithreaded support.

Bug Fixes

  • Ensure all input images are converted to RGBA8 format.
  • Fix file name parsing with dots.
  • Fix null error on AVIF decoding.
  • Return error when input width or height is 0.
  • Prevent panic when no output is present by safely calculating max length.
  • Fix float32 image handling in CLI.
  • Improve resize value parsing and reduce edge case errors for width/height.
  • Fix encoder function logic.
  • Update AVIF, MozJPEG, Oxipng, and WebP codecs to new APIs.
  • Fix Clippy issues and build warnings.
  • Fix trailing slash issues on Windows.
  • Correct feature compilation and binary packaging.

v0.11.0-next.3

v0.11.0-next.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Sep 21:41

v0.11.0-next.3

Bug Fixes

  • cli: πŸš‘ convert all input images to rgba8 (c980e9a)
  • cli: πŸ› fixed incorect handling of file names with dots (1f3275c)
  • cli: πŸ› fixed null error on avif decoding (59b6759)
  • error if input width or height is 0 (b626fdc)
  • cli: πŸ› ensure max length calculation returns 0 instead of panicking when no outputs are present (3d0a3a3)
  • cli: πŸ› fixed handling of float32 images (66c3648)
  • cli: πŸ› improved resize value parsing by trimming input and refining error handling for invalid formats (2a43c26)
  • cli: πŸ› updated parsing logic for width and height to reduce number of edge cases (9bd3ea2)
  • operations: πŸ› updated apply icc profile operation to work in threads (b5dee09)

Features

  • cli: ✨ update resize value format for width and height to use 'w' and 'h' suffixes instead of 'x_' and '_x' (693ea46)

v0.11.0-next.2

v0.11.0-next.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Jul 11:06

v0.11.0-next.2

Bug Fixes

  • cli: πŸ’„ updated display styles (19adcea)

Features

  • cli: πŸ’„ added progress bar (398e504)
  • cli: ✨ added quiet and no progress flags (0517908)
  • codecs: ✨ added tiff support (abc78f5)

v0.11.0-next.1

v0.11.0-next.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Jun 19:09

v0.11.0-next.1

Bug Fixes

  • cli: fixed encoder function (1a6bf92)
  • codecs: fixed clippy errors (7f3c261)
  • codecs: updated avif decoder to new api (1c8ea8e)
  • codecs: updated avif encoder to new api (d07193d)
  • codecs: updated mozjpeg encoder to new api (b408b31)
  • codecs: updated oxipng encoder to new api (fdfcbd9)
  • codecs: updated webp decoder to new api (98728e0)
  • codecs: updated webp encoder to new api (ede4784)
  • workflow: πŸ‘· removed check for unique branch (0505c62)
  • workflow: πŸ’š fixed macos version (17eeba1)
  • fixed clippy issues (0045b5b)

Features

  • cli: 🚸 added warn when input is not a file (dd2fe3e)
  • operations: added "apply icc profile" operation (e12b7c4)