HDRView is a research-oriented image viewer designed to facilitate the examination and comparison of high-dynamic range (HDR) images. It supports a wide range of HDR and standard low-dynamic range (LDR) image formats, including EXR, HDR, PFM, PNG, JPEG, and more.
Key Features:
Multi-format support: Read and write various HDR formats (EXR, HDR, PFM, Ultra HDR JPEG) and standard LDR formats (PNG, JPEG, BMP, etc.).
True HDR display: Supports extended dynamic range (EDR) on compatible Apple displays and 10-bit monitors for accurate HDR visualization.
Cross-platform compatibility: Runs on macOS, Linux, Windows, and modern web browsers, including mobile devices like iPhones and iPads.
Pixel inspection tools: Overlay pixel grids and numeric color values to facilitate detailed image analysis.
Keyboard shortcuts and command palette: Enhance workflow efficiency with extensive keyboard shortcuts and a fuzzy-search command palette.
Audience & Benefit:
Ideal for researchers, photographers, and professionals working with HDR content. HDRView provides precise tools to examine, compare, and analyze HDR images while supporting cross-platform workflows for seamless integration into existing projects.
HDRView can be installed via winget on compatible systems, ensuring easy setup for users across different operating environments.
README
HDRView
Master branch:
HDRView is a simple research-oriented image viewer with an emphasis on examining and comparing high-dynamic range images (but supporting common image formats too). It runs on macOS, Linux, Windows, and directly in your browser -- just go to wkjarosz.github.io/hdrview/ for the latest release version and wkjarosz.github.io/hdrview/dev for the development version. This even works on an iPhone or iPad!
On a Mac with an extended dynamic range (EDR) or 10-bit display, HDRView can display images in true HDR.
HDRView currently supports the following image formats while being careful to properly interpret and display colors:
Format
Description
Read
Write
OpenEXR (.exr)
High-dynamic-range image format by Industrial Light & Magic, including multichannel, multi-part, and arbitrary metadata attributes (via OpenEXR)
✓
✓
Portable Float Map (.pfm)
Dead simple HDR floating-point image format
✓
✓
UltraHDR (.jpeg)
HDR images from recent Android phones (via libultrahdr)
Here's a screenshot of HDRView viewing a JPEG on macOS:
Or, running on an iPad as a webapp, viewing a luminance-chroma EXR image stored using XYZ primaries with chroma subsampling:
When sufficiently zoomed in, HDRView can overlay the pixel grid and numeric color values on each pixel to facilitate inspection:
HDRView features extensive keyboard shortcuts, and pressing Cmd+Shift+P brings up a VS Code/Atom/Sublime Text-style command palette allowing you to find any command with keyboard-based fuzzy searching:
HDRView supports the extended dynamic range (XDR, 30 bit) capabilities of recent Macs, allowing it to use finer precision (reducing banding) and brighter whites (reducing clipping) when displaying HDR images.
When displaying images on a standard dynamic range (SDR, 24 bit) display (or saving to an LDR file format), HDRView uses blue-noise dithering:
This reduces apparent banding artifacts in smooth gradients compared to naively displaying HDR images on such displays:
Obtaining/running HDRView
You can download pre-built binaries for macOS, Linux, and Windows from the releases page. You can also just run the web app version directly in your browser from any platform.
Building from source
> [!IMPORTANT]
> If you want to build from source you should check out a published release tag -- the master branch is used for development and may be broken between releases.
Compiling from source requires:
CMake >= 3.13
A C++ toolchain for your platform (Xcode on macOS, Visual Studio on Windows, GCC/Clang on Linux)
Optional: ninja for faster builds; emscripten if building the web version
By default HDRView uses CPM.cmake to download and build third-party dependencies automatically; however, you will still need to have several packages installed since those dependencies often try to find their own dependencies locally via find_package. You can check the GitHub Actions workflows under .github/workflows/ to see which packages should be installed.
If you want to rely entirely on system-installed libraries instead (often desirably on linux), pick one of the -local presets (for example linux-local or macos-x86_64-local). These presets enable CPM.cmake's CPM_USE_LOCAL_PACKAGES option, which instructs it to try to use local packages via find_package first.
A number of options are available to control supported features (see the top of the CMakeLists.txt file).
Alternatively, you should be able to do all this via VS Code if you have the CMake extension set up properly.
Installation
On macOS you can just copy the HDRView.app bundle to your /Applications folder. Alternatively you can create a DMG installer using:
cpack -C Release -G DragNDrop
Recent version of macOS will complain that the app is unsigned and from an unknown developer. You will need to go to the Security and Privacy part of system Settings to allow HDRView to run.
On Windows you'll need to copy HDRView.exe together with the accompanying assets folder to your desired installation location.
For Linux there is an appimage installer. After configuring and building using the linux-appimage preset, you can create the appimage using:
cpack -C Release -G External
Running from the terminal
You can also run HDRView from the terminal. Run HDRView --help to see the command-line options. On macOS the executable is stored within the app bundle in HDRView.app/Contents/MacOS/HDRView. You might want to add it, or a symlink, to your path.