Thanks to visit codestin.com
Credit goes to github.com

Skip to content

A simple research-oriented image viewer with an emphasis on examining and comparing high-dynamic range (HDR) images.

License

Notifications You must be signed in to change notification settings

wkjarosz/hdrview

Repository files navigation

HDRView

Master branch: macOS build Linux build Windows build

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)

Example screenshots

Here's a screenshot of HDRView viewing a JPEG on macOS: Screenshot

Or, running on an iPad as a webapp, viewing a luminance-chroma EXR image stored using XYZ primaries with chroma subsampling: Screenshot

When sufficiently zoomed in, HDRView can overlay the pixel grid and numeric color values on each pixel to facilitate inspection: Screenshot

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: Screenshot

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: Screenshot

This reduces apparent banding artifacts in smooth gradients compared to naively displaying HDR images on such displays: Screenshot

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

Compiling should be as simple as:

git clone https://github.com/wkjarosz/hdrview.git
cd hdrview
cmake --preset default
cmake --build --preset default-release

You can see all available presets (defined in CMakePresets.json) by running:

cmake --list-presets=configure
cmake --list-presets=build

For instance:

  • macOS:

    cmake --preset macos-arm64-cpm
    cmake --build --preset macos-arm64-cpm-release
  • Linux (use linux-local to prefer system-installed deps or linux-cpm to 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.

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.

License

  • Copyright (c) Wojciech Jarosz
  • 3-clause BSD — see LICENSE.txt for details.

Credits

  • HDRView builds on a number of open-source libraries. See the About dialog (Credits) in the app for the full list.

About

A simple research-oriented image viewer with an emphasis on examining and comparing high-dynamic range (HDR) images.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 10