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) | ✓ | ✓ |
| JPEG (.jpg, .jpeg) | (via libjpeg-turbo) | ✓ | ✓ |
| PNG (.png) | Including animated PNGs and HDR PNGs with CICP (via libpng) | ✓ | ✓ |
| TIFF (.tif, .tiff) | Including SGI LogLuv and Pixar Log HDR formats (via libtiff) | ✓ | ✓ |
| JPEG-XL (.jxl) | Including lossless, lossy, animation/burst, and HDR support (via libjxl) | ✓ | ✓ |
| HEIF, AVIF (.heif, .avif) | Including lossless, lossy, animation/burst, and HDR support (via libheif and various codec libraries) | ✓ | ✓ |
| WebP (.webp) | Google's image format supporting lossy/lossless and animation (via libwebp) | ✓ | ✓ |
| QOI (.qoi) | Quite OK Image — simple, fast lossless format (via qoi) | ✓ | ✓ |
| DDS (.dds) | DirectX GPU/compressed texture formats (via smalldds) | ✓ | |
| RAW (camera raw) | Various camera raw formats (via LibRaw) | ✓ | |
| PSD (.psd) | Adobe Photoshop files (via stb_image + metadata extraction) | ✓ | |
| BMP (.bmp) | Bitmap (via stb_image) | ✓ | ✓ |
| TGA (.tga) | Targa raster image (via stb_image) | ✓ | ✓ |
| HDR (.hdr / Radiance) | Radiance HDR images (via stb_image) | ✓ | ✓ |
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:
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.
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:
ninjafor faster builds;emscriptenif building the web version
Compiling should be as simple as:
git clone https://github.com/wkjarosz/hdrview.git
cd hdrview
cmake --preset default
cmake --build --preset default-releaseYou can see all available presets (defined in CMakePresets.json) by running:
cmake --list-presets=configure
cmake --list-presets=buildFor instance:
-
macOS:
cmake --preset macos-arm64-cpm cmake --build --preset macos-arm64-cpm-release
-
Linux (use
linux-localto prefer system-installed deps orlinux-cpmto let CPM fetch/build them):cmake --preset linux-local cmake --build --preset linux-local-release
-
Windows (Visual Studio generator via presets):
cmake --preset windows cmake --build --preset windows-release
-
Emscripten (web build):
cmake --preset emscripten cmake --build build/emscripten --parallel
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.
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 DragNDropRecent 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 ExternalYou 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.
- Copyright (c) Wojciech Jarosz
- 3-clause BSD — see LICENSE.txt for details.
- HDRView builds on a number of open-source libraries. See the About dialog (Credits) in the app for the full list.