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.4 release candidate: 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.

Planned for v0.1.5: Batch Apple HEIC/JPEG extraction, HDR TIFF conversion, rebuild, validation, and machine-readable reporting.

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.

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

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.4
File Size Uploaded
luvix-0.1.4.tar.gz 7.6 MB Details

Built distribution (wheel)

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

Total release size: 7.6 MB

Release files / luvix-0.1.4.tar.gz

Download URL luvix-0.1.4.tar.gz
Size 7.6 MB
Tags Source
SHA-256 checksum
How to use checksums
4c776c93ba3e0e0fa67401a3060c4b9b4af71e7058eda5cd33acd922b2e6acda
BLAKE2b-256 checksum
How to use checksums
e8d06c31f5da114096f2be7aa88edd2b21f3aac6f4f10d5a3324d364d4a14bc1
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.4-py3-none-any.whl

Download URL luvix-0.1.4-py3-none-any.whl
Size 34.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9a19664e9017cb15f550b663ed33a933123bf728566db91fd2eee38daee26ffc
BLAKE2b-256 checksum
How to use checksums
4672bd368e623ea7582338437b4ca72c282d3e9dec3fecf63d54fd2ce289c707
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

0.1.5

2 release files

This release

0.1.4 This release

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