Skip to main content

Luvix

Tests

Luvix is a command-line HDR interoperability toolkit for photographers. It helps move HDR photographs between capture, editing, and delivery applications when their gain-map formats or HDR representations are not directly compatible.

For example, an iPhone photo can contain an SDR base and an HDR gain map. Luvix can inspect and extract those components, reconstruct the HDR image, and export a high-precision TIFF for editing in a familiar application such as Photoshop. It can also rebuild supported Apple gain-map captures after component edits. The goal is to preserve HDR intent, color information, and metadata across workflows, not to replace the editor.

Current support

v0.1.5: Apple iPhone gain-map HEIC and JPEG on macOS using ImageIO/Core Image and Swift. inspect, inspect-hdr, upright component extract, geometry-checked rebuild, validate, and export tiff are exercised with real sanitized iPhone fixtures. The 32-bit floating-point linear TIFF path uses a matching linear ICC profile. The 16-bit PQ path accepts an externally supplied compatible PQ ICC profile; Luvix does not redistribute the Adobe reference profile used during validation.

Extraction normalizes the SDR base and gain map into the same upright editing orientation. Rebuild checks only structural geometry and decodability, reverses that orientation normalization, and restores the source orientation. Pixel, color, exposure, and other same-geometry edits are intentionally the user's responsibility.

Batch workflows (v0.1.5): Mixed Apple HEIC/JPEG input discovery, upright component extraction, 32-bit linear / 16-bit PQ TIFF export, manifest-paired rebuild and structural validation, and per-file JSON reporting. Processing is sequential and never overwrites existing outputs.

Luvix is an interoperability layer, not a RAW developer or general-purpose photo editor. Conventional RAW files should continue through established RAW editing workflows when those tools already handle them correctly. New input formats are added when they address a demonstrated HDR interoperability need.

Install

Recommended for a command-line application:

uv tool install luvix
luvix --version

Alternatively, use pipx install luvix, or install luvix with pip inside an activated virtual environment. Once installed, run luvix directly. uv run luvix is for development from a source checkout.

The native Apple HDR backend requires macOS and a usable Swift/Xcode toolchain. Use luvix doctor to check the environment.

Quick start

luvix doctor
luvix inspect ~/Pictures/photo.HEIC
luvix inspect ~/Pictures/photo.JPG
luvix extract ~/Pictures/photo.HEIC --output ~/Pictures/work/photo
luvix export tiff ~/Pictures/photo.HEIC \
  --bit-depth 32 --transfer linear --color-space source \
  --output ~/Pictures/work/photo_linear32.tif

For 16-bit PQ output, supply a compatible external PQ ICC and an explicit reference white. See the user guide for the complete workflow and current limitations. Commands that rebuild or convert images should be verified against their output format and color metadata before professional delivery.

Batch quick start (macOS)

Batch commands accept mixed Apple HDR HEIC/JPEG sources. Output is never overwritten.

luvix batch extract ~/Pictures/iPhone --output ~/Pictures/Extracted --json
luvix batch export tiff ~/Pictures/iPhone --bit-depth 32 --transfer linear --color-space source --output ~/Pictures/Linear32 --json
luvix batch export tiff ~/Pictures/iPhone --bit-depth 16 --transfer pq --color-space source --reference-white 203 --icc-profile ~/ColorProfiles/P3_PQ.icc --output ~/Pictures/PQ16 --json
luvix batch rebuild ~/Pictures/Extracted --sources ~/Pictures/iPhone --output ~/Pictures/Rebuilt --json
luvix batch validate ~/Pictures/Rebuilt --sources ~/Pictures/iPhone --extracted ~/Pictures/Extracted --json

Extraction creates a directory per input image, named with its source extension (for example IMG_9203.HEIC/base.png). --recursive enables recursive discovery; --fail-fast stops after the first per-image failure. A compatible external PQ ICC is required for the tested tagged 16-bit PQ workflow. See the user guide for details.

Editing paths

Luvix favors the least-destructive workflow that fits the edit. For color-only or other component-safe edits, extract writes the SDR base and gain map in the same upright editing orientation; rebuild checks their geometry and restores the source orientation when packaging the Apple HDR image. Luvix does not judge the artistic or pixel-level content of those edits.

For crop, resize, generative fill, compositing, or other geometry-changing edits, reconstruct the HDR image and work in a high-precision raster such as 32-bit linear TIFF or 16-bit PQ TIFF. A new gain map can then be generated by a compatible downstream workflow; generalized gain-map generation is planned for Luvix's later interoperability work.

Documentation

  • User guide: commands, output formats, and troubleshooting.
  • Architecture: gain-map model, color handling, and format constraints.
  • Roadmap: release ledger, Apple JPEG, batch workflows, ISO 21496-1 / Ultra HDR, libvips/libultrahdr, and future gain-map generation.
  • Release checklist: CI, package verification, publishing, and installed-package tests.
  • Changelog

Development

Development commands and contribution workflows are separate from normal CLI usage. The Python package is cross-platform, but the current Apple HDR processing backend is macOS-only. Refer to the project source and release checklist for development validation.

License

Apache License 2.0. Do not redistribute proprietary reference ICC profiles or private photographs without appropriate rights.

Metadata

Release files for luvix 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for luvix 0.1.5
File Size Uploaded
luvix-0.1.5.tar.gz 66.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for luvix 0.1.5
File Interpreter ABI Platform
luvix-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 66.8 MB

Release files / luvix-0.1.5.tar.gz

Download URL luvix-0.1.5.tar.gz
Size 66.8 MB
Tags Source
SHA-256 checksum
How to use checksums
d66f2b1e2d628c51842eead2ba447f7303f32c4c4562ecc163513403a035cbfc
BLAKE2b-256 checksum
How to use checksums
84f8df8242bf5cdd697174bd5046273c07c67bb918377149ec3eebf3af5c5535
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / luvix-0.1.5-py3-none-any.whl

Download URL luvix-0.1.5-py3-none-any.whl
Size 40.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2001d31bac1dd440fa6fb89d7b4b0128d725daabd5f3829d825f03e67c041f79
BLAKE2b-256 checksum
How to use checksums
39a9184c8a27a1aaa2d6bde6d030c85d02e915710a44b13d5006cf231b6e7d16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page