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

Overview

HDRView

Master branch: macOS build Linux build Windows build

Develop branch: macOS build Linux build Windows build

HDRView is a simple research-oriented high-dynamic range image viewer with an emphasis on examining and comparing images, and including minimalistic tonemapping capabilities. HDRView currently supports reading EXR, PNG, TGA, BMP, HDR, JPG, GIF, PNM, PFM, and PSD images and writing EXR, HDR, PNG, TGA, PPM, PFM, and BMP images.

Example screenshots

HDRView supports loading several images and provides exposure and gamma/sRGB tone mapping control with high-quality dithering of HDR images. Screenshot When sufficiently zoomed in, HDRView can overlay the pixel grid and numeric color values on each pixel to facilitate inspection. Screenshot Displaying HDR images naively on a 24 bit display leads to visible banding in smooth gradients. Screenshot HDRView supports high-quality dithering (both when viewing and when saving to an LDR file) to reduce these artifacts. Screenshot

Obtaining HDRView

If you are running a recent version of macOS, you can download the pre-built binary installer DMG from the releases page. For other platforms, you will need to build HDRView from source for now.

Compiling

Compiling from scratch requires CMake and a recent version of the XCode build tools on macOS, Visual Studio 2015 on Windows, and GCC on Linux.

Linux and macOS

On Linux and macOS, compiling should be as simple as

git clone --recursive https://github.com/wkjarosz/hdrview.git
cd hdrview
mkdir build
cd build
cmake ../
make -j 4

Windows

On Windows, a few extra steps are needed.

Since MSVC's regex implementation is buggy, you first need to have the Boost regex library installed. You can find binary installers for Windows on the Boost website. Click the "More Downloads..." link and make sure to download the "Prebuilt windows binaries". You need at least Boost version 1.53. Once installed, you can run:

git clone --recursive https://bitbucket.org/wkjarosz/hdrview.git
cd hdrview
mkdir build
cd build
cmake ../
    -G"Visual Studio 15 2017 Win64"
    -DBOOST_ROOT="C:\where_you_installed_boost"
    -DUSE_BOOST_REGEX=true

You can also do this through cmake-gui if you prefer. Click Add Entry and define BOOST_ROOT to the directory where you installed Boost (by default something like C:\local\boost_1_65_0). Run Configure and select your version of Visual C++ and 64bit. After configure finishes, search for USE_BOOST_REGEX and check it. Run Configure again, and then click Generate.

Open the generated file HDRView.sln and proceed building as usual from within Visual Studio.

Installing on macOS

This should be as easy as make install. On macOS this will copy the application bundle into /Applications and create the symlink hdrview in /usr/local/bin so you can launch HDRView from the terminal.

HDRView usage

Run ./hdrview --help to see the command-line options, or run ./hdrview and hit the h button to see a list of keyboard shortcuts in the application.

hdrbatch usage

There is also a separate executable hdrbatch intended for batch processing/converting images. Run ./hdrbatch --help to see the command-line options.

License

Copyright (c) Wojciech Jarosz

3-clause BSD. For details, see the LICENSE.txt file.

HDRView depends on the following libraries (which are included explicitly or as git submodules):

  • Wenzel Jakob's NanoGUI library, which is licensed under a BSD-style license.
  • ILM's OpenEXR library, which is licensed under a modified BSD license.
  • Some stb libraries, developed by Sean Barrett and released into the public domain.
  • The tinydir library, which is licensed under a simplified BSD.
  • The docopt.cpp library, which is dual-licensed under MIT and Boost licenses.
  • Gabi Melman's spdlog library, which is licensed under the MIT license.
  • syoyo's tinydngloader library, which is licensed under the MIT license.
Comments
  • Build fails due to linker error

    Build fails due to linker error

    Encountered a linker error during source build on master

    Issue seems to be missing Imath_2_5::SingleMatrixExc and other symbols from OpenEXR targets install.log

    opened by kunaltyagi 4
  • logging verbosity

    logging verbosity

    Hello,

    First, I am a big fan of hdrview. I think it's a really good tool to compare exr/hdr images.

    At latest master (3a9689c), the logging seems to become overly verbose if I hold the mouse button down and drag the image around (screenshot): Capture I am not sure exactly when it started to happen, but should be after the project migrated from bitbucket. Is it possible to add a flag to adjust the verbosity, or simply remove this kind of spammy logs?

    Thanks!

    opened by MangoSister 3
  • Color3/Color4::min()/max() conflict with macros in <windows.h> on Windows

    Color3/Color4::min()/max() conflict with macros in on Windows

    Hi,

    The latest build seems to be broken on windows because the min()/max() member of Color3/Color4 conflicts with the macros in <windows.h>. One simple fix could be to define NOMINMAX for windows, e.g.

    if(WIN32)
      target_compile_definitions(HDRView PRIVATE -DNOMINMAX)
    endif()
    

    Thanks!

    opened by MangoSister 2
  • Add missing icons requiered to execute

    Add missing icons requiered to execute "make install"

    Solves #83 by adding the missing icons using copies of the original ones.

    Testing: Compiled in Ubuntu 20.04 LTS (GCC-10).

    • make install works fine.
    • ninja install works fine.
    opened by fjavifabre 1
  • Yang: Fixed win32 build problems

    Yang: Fixed win32 build problems

    • Added NOMINMAX define in CMake on Win32 to avoid Color3::min() colliding with Microsoft's min macro
    • Building zlib: using externalproject_add() function to force CMake to only build the Release configuration on Win32, supporting configurations other than Release for HDRView on Windows
    • Added details about getting boost on Win32 in README.

    Note:

    • When building hdrbatch the linker will now throw warnings because we are linking a release library to a debug executable. This might be an issue but it's still better than not being able to build at all.
    [build] LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library [C:\Ghost\repos\hdrview-jarosz\build\hdrbatch.vcxproj]
    [build] LINK : warning LNK4217: symbol 'free' defined in 'libucrt.lib(free.obj)' is imported by 'zlibstatic.lib(zutil.obj)' in function 'zcfree' [C:\Ghost\repos\hdrview-jarosz\build\hdrbatch.vcxproj]
    [build] LINK : warning LNK4217: symbol 'malloc' defined in 'libucrt.lib(malloc.obj)' is imported by 'zlibstatic.lib(zutil.obj)' in function 'zcalloc' [C:\Ghost\repos\hdrview-jarosz\build\hdrbatch.vcxproj]
    

    Testing: Built hdrview, hdrbatch on Windows via VSCode.

    opened by GhostatSpirit 1
  • Develop (#95)

    Develop (#95)

    • Updating to OpenEXR 3
    • Closes #14
    • Closes #82
    • Closes #88
    • Fixing CMP0135 policy issues by setting -DCMAKE_POLICY_DEFAULT_CMP0135=NEW during config
    • sort improvements
    • fix crash in zap gremlins
    • centralizing cmd/alt key string processing
    • allowing 'H' to close help window
    opened by wkjarosz 0
  • Make install cannot find

    Make install cannot find "icon-96.png"

    After compiling in Ubuntu 20.04 (GCC-10) running make install gives the following error:

    -- Install configuration: "Release"
    -- Installing: /usr/local/bin/HDRView
    -- Installing: /usr/share/applications/hdrview.desktop
    -- Installing: /usr/share/icons/hicolor/1024x1024/apps/hdrview.png
    -- Installing: /usr/share/icons/hicolor/512x512/apps/hdrview.png
    -- Installing: /usr/share/icons/hicolor/256x256/apps/hdrview.png
    -- Installing: /usr/share/icons/hicolor/128x128/apps/hdrview.png
    CMake Error at cmake_install.cmake:125 (file):
      file INSTALL cannot find
      "/home/myUser/hdrview/resources/icon-96.png": No such file or
      directory.
    
    opened by fjavifabre 0
  • Semi-transparent images flicker

    Semi-transparent images flicker

    To reproduce:

    1. Create a new image with a semitransparent background
    2. hover mouse around the image makes it flicker
    • Using brush tool on seemingly any image will make the flicker go away, and subsequent new images don't flicker.
    opened by wkjarosz 0
  • HDRView UI coming out bright gray on Windows

    HDRView UI coming out bright gray on Windows

    Hi Wojciech,

    In my windows environment, the UI comes out a bright gray, as if some gamma correction had been incorrectly applied to the UI. I've confirmed that this is specific to my environment, since others are seeing the regular darker gray. Do you have any hints as to what could be causing this? Some nanogui configuration maybe?

    Thanks, Olivier

    image

    opened by ommaury 1
  • The same file cannot be opened in another location

    The same file cannot be opened in another location

    Can be opened hdrview '/home/lab0/Pictures/SimpleAlbedo.png' Can't be opened hdrview '/media/lab0/NaGenHao/SimpleAlbedo.png' NaGenHao is another SSD.

    SimpleAlbedo

    image

    opened by LogWell 1
Releases(v1.6.1)
  • v1.6.1(Dec 29, 2022)

    What's Changed

    This is the same as v1.6.0 but it hopefully fixes windows releases, and a small bug in zap gremlins.

    Changes in v1.6.0:

    • Updating to OpenEXR 3
    • Closes https://github.com/wkjarosz/hdrview/issues/14
    • Closes https://github.com/wkjarosz/hdrview/issues/82
    • Closes https://github.com/wkjarosz/hdrview/issues/88
    • Fixing CMP0135 policy issues by setting -DCMAKE_POLICY_DEFAULT_CMP0135=NEW during config
    • improvements for sorting the open file list
    • fix crash in zap gremlins filter
    • centralizing cmd/alt key string processing
    • allowing 'H' to close help window
    • more extensive github action tests

    Full Changelog: https://github.com/wkjarosz/hdrview/compare/v1.5.2...v1.6.1

    Source code(tar.gz)
    Source code(zip)
    hdrbatch.exe(4.13 MB)
    HDRView-Metal.dmg(9.34 MB)
    HDRView-OpenGL.dmg(9.28 MB)
    HDRView.exe(6.97 MB)
  • v1.6.0(Dec 29, 2022)

    Changes since v1.5.2

    A bunch of small but useful improvements this release:

    • Updating to OpenEXR 3
    • Closes #14
    • Closes #82
    • Closes #88
    • Fixing CMP0135 policy issues by setting -DCMAKE_POLICY_DEFAULT_CMP0135=NEW during config
    • improvements for sorting the open file list
    • fix crash in zap gremlins filter
    • centralizing cmd/alt key string processing
    • allowing 'H' to close help window
    • more extensive github action tests

    Full Changelog: https://github.com/wkjarosz/hdrview/compare/v1.5.2...v1.6.0

    Source code(tar.gz)
    Source code(zip)
    HDRView-Metal.dmg(9.34 MB)
    HDRView-OpenGL.dmg(9.28 MB)
  • v1.5.2(Dec 24, 2022)

    Changes since v1.5.1

    A bunch of small but useful improvements this release:

    • fix nanogui flicker on mac (thanks to @wjakob and @Tom94)
    • new (Ramamoorthi-style) SH irradiance convolution filter for environment maps
    • new bump map -> normal map conversion filter
    • new filter to zap gremlins (replace NaNs or Infs with a specified color/value)
    • added Clarberg's equal area spherical mapping as an additional envmap parametrization
    • hdrbatch is now included in the HDRView bundle on macOS
    • folders can now be dropped onto the app icon on macOS
    • some bug fixes and improvements to hdrbatch parsing and average/variance calculations
    • some build and CI fixes

    Full Changelog: https://github.com/wkjarosz/hdrview/compare/v1.5.1...v1.5.2

    Source code(tar.gz)
    Source code(zip)
    HDRView-Metal.dmg(8.93 MB)
    HDRView-OpenGL.dmg(8.87 MB)
  • v1.5.1(Jul 21, 2022)

  • v1.5(Jul 21, 2022)

    Changes since v1.4.1

    A bunch of small but useful improvements this release:

    • HDRView now supports HDR/XDR displays on macOS!
    • On macOS, HDRView now supports loading images via Finder or dragging-and-dropping onto the application (you can now set HDRView as the associated image viewer for Finder/open!).
    • The info panel now dynamically adjusts precision of image statistics like the min, average, max
    • Removed submodules and switched to using CPM.cmake
    • Switched from docopt to CLI11. Windows builds no longer depend on Boost, which was the cause of most build/link issues.
    • Added missing icon files so make install works on Linux (thanks @fjavifabre)
    • Updated README.md
    Source code(tar.gz)
    Source code(zip)
    hdrbatch.exe(4.12 MB)
    HDRView-Metal.dmg(5.60 MB)
    HDRView-OpenGL.dmg(5.53 MB)
    HDRView.exe(6.92 MB)
  • v1.4.1(Jul 7, 2021)

  • v1.4(Jul 1, 2021)

    Changes since v1.3

    • Application settings (window sizes, tool settings, etc.) now saved out to disk
    • Ruler and line drawing tools
    • Shift-click to draw straight lines with all brush-based tools
    • Better keyboard handling (all dialogs can be confirmed/canceled using Return/Esc).
    • Toolbar can now be resized to have two columns.
    • Channel mixer filter, grayscale channel mode and filter.
    • Cut (Command+X) functionality
    • Gradient-domain (Poisson) copy-paste
    • Now using Cem Yuksel's C^2 interpolating splines for smoothing
    • Improvements to help window
    Source code(tar.gz)
    Source code(zip)
    HDRView-Metal.dmg(3.06 MB)
    HDRView-OpenGL.dmg(3.03 MB)
  • v1.3.2(Jun 21, 2021)

  • v1.3.1(Jun 16, 2021)

    Changes since previous release

    (This is identical to v1.3 -- just bumping tag to re-trigger release workflow.)

    • HDView now supports multiple image editing tools including: paintbrush, clone stamp, eraser, eyedropper
      • each tool can take over the top panel to provide options
        • e.g. paintbrush supports selecting radius, hardness, flow, angle, roundness, spacing and smoothness
      • GUI shows selected tool's overlay on the image (e.g. the circle/ellipse of the brush)
      • paint brush supports smoothing of mouse cursor movements using Chaikin's quadratic b-spline corner-cutting algorithm (centripetal Catmull-Rom also an option, but commented out)
    • Added a foreground/background color selection widget in the toolbar that is shared by all tools
    • keyboard shortcut code has been refactored so each tool handles it's own shortcuts
    • Info is now it's own panel on the left side
    • minor GUI fixes.
    Source code(tar.gz)
    Source code(zip)
    HDRView-Metal.dmg(2.94 MB)
    HDRView-OpenGL.dmg(2.91 MB)
  • v1.3(Jun 16, 2021)

    Changes since previous release

    • HDView now supports multiple image editing tools including: paintbrush, clone stamp, eraser, eyedropper
      • each tool can take over the top panel to provide options
        • e.g. paintbrush supports selecting radius, hardness, flow, angle, roundness, spacing and smoothness
      • GUI shows selected tool's overlay on the image (e.g. the circle/ellipse of the brush)
      • paint brush supports smoothing of mouse cursor movements using Chaikin's quadratic b-spline corner-cutting algorithm (centripetal Catmull-Rom also an option, but commented out)
    • Added a foreground/background color selection widget in the toolbar that is shared by all tools
    • keyboard shortcut code has been refactored so each tool handles it's own shortcuts
    • Info is now it's own panel on the left side
    • minor GUI fixes.
    Source code(tar.gz)
    Source code(zip)
  • v1.2.2(Jun 11, 2021)

    Changes since previous release

    • Replaced nanogui's comboboxes with custom dropdown menu widget that resembles macOS dropdowns/comboboxes more closely. In particular, menu is shown right at the widget/mouse cursor (instead of off the side of the window) for quicker navigation.
    • The left side panels now have a right click menu to select solo mode, as well as collapse or expand all panels.
    • Some UI bugfixes
    Source code(tar.gz)
    Source code(zip)
    HDRView-Metal.dmg(2.91 MB)
    HDRView-OpenGL.dmg(2.88 MB)
  • v1.2.1(Jun 8, 2021)

  • v1.2.0(Jun 7, 2021)

    Changes since last release

    Features/fixes

    • side panel GUI improvements
      • making side panel buttons flat, and put panels in a well that shrinks to a small height when collapsed (instead of being set to invisible). Inspired by Lightroom Classic foldable panels
      • fixing image list drawing glitch
      • fixed histogram y-axis bug.
    • adding info panel which shows
      • file name,
      • resolution,
      • 32-bit and 8-bit color,
      • pixel coordinate,
      • ROI, min, avg, and max info

    Other changes

    • upgrading spdlog submodule to v1.8.5
    • removing Eigen and replacing with nanogui's simple vector stuff, own array2d, and Imath::Matrix
    • moving demosaicing and dng reading into their own files
    • more snake_casing
    • returning copy instead of const reference to callback functions (to allowing chaining).
    Source code(tar.gz)
    Source code(zip)
    HDRView-Metal.dmg(2.90 MB)
    HDRView-OpenGL.dmg(2.87 MB)
  • v1.1.0(Jun 2, 2021)

    Changes since last release

    Features

    • added support for different tools. So far just the hand tool for pan/zoom, and the rectangular marquee tool
    • can now select rectangular region of interest (ROI)
    • filters can now be applied to just the selected ROI
    • added crop command (crops to currently selected ROI)
    • added copy-paste functionality
    • added new colorpicker and related widgets
    • some new keyboard shortcuts: tool switching, selection, copy/paste

    Other changes

    • removing unused color functions
    • moving generic widgets to nanogui namespace
    • some changes to icons and keyboard shortcuts
    • continuing snake casing
    • cleanup and reorg

    Released files

    • pre-built binaries for macOS (built using OpenGL or Metal backends)
    Source code(tar.gz)
    Source code(zip)
    HDRView-Metal.dmg(2.81 MB)
    HDRView-OpenGL.dmg(2.78 MB)
  • v1.0.2(May 25, 2021)

  • v1.0.1(May 17, 2021)

    Changes

    Mostly minor fixes from v1.0:

    • sorting by filename now uses a natural sort algorithm so files with numbers are sorted properly.
    • added alpha channel visualization mode
    • removed bold from image button filenames when only showing short/unique portion of filenames
    • release downloads automatically added via GitHub actions

    Released files

    • pre-built binaries for macOS (built using OpenGL or Metal backends)
    Source code(tar.gz)
    Source code(zip)
    HDRView-Metal.dmg(2.80 MB)
    HDRView-OpenGL.dmg(2.76 MB)
  • v1.0(May 14, 2021)

    Version 1.0!

    Changes

    • HDRView now uses the new nanogui 2
    • On macOS, HDRView defaults to using Metal, but can also be compiled using OpenGL
    • false color visualization now uses the inferno matplotlib colormap (from Matt Zucker's shader toy)
    • improved image list panel
      • images can be rearranged by dragged
      • both left and right alignment
      • sorting of image list
    • a few new filters (fill and set channel)
    • fixed many small issues.

    Released files

    • Pre-built binary for macOS
    Source code(tar.gz)
    Source code(zip)
    HDRView-v1.0.dmg(2.79 MB)
Owner
Wojciech Jarosz
Associate Professor leading Dartmouth's Visual Computing Lab. My research in computer graphics is primarily concerned with physically based rendering.
Wojciech Jarosz
Qt5 image viewer with optional video support

Qt5 image viewer with optional video support

null 1.5k Jan 1, 2023
PoC black/white image sequence to dumpy gif image sequence converter

PoC black/white image sequence to dumpy gif image sequence converter

null 69 Dec 9, 2022
The “Quite OK Image” format for fast, lossless image compression

The “Quite OK Image” format for fast, lossless image compression

Dominic Szablewski 6k Dec 30, 2022
A simple API wrapper that generates images & facts of any animal

animality.h A simple API wrapper that generates images & facts of any animal Required dependencies: libcurl for sending HTTPS requests. pthreads for t

animality 5 Nov 10, 2022
Video++, a C++14 high performance video and image processing library.

Video++ Video++ is a video and image processing library taking advantage of the C++14 standard to ease the writing of fast video and image processing

Matthieu Garrigues 692 Dec 28, 2022
ppl.cv is a high-performance image processing library of openPPL supporting x86 and cuda platforms.

ppl.cv is a high-performance image processing library of openPPL supporting x86 and cuda platforms.

null 366 Dec 30, 2022
CGIF, A fast and lightweight GIF encoder that can create GIF animations and images

CGIF, a GIF encoder written in C A fast and lightweight GIF encoder that can create GIF animations and images. Summary of the main features: user-defi

Daniel Löbl 75 Dec 28, 2022
A crude untested example showing how to retrieve and display images from multiple cameras with OpenCV and wxWidgets.

About wxOpenCVCameras is a crude untested example of how to retrieve and display images from multiple cameras, using OpenCV to grab images from a came

PB 8 Dec 14, 2022
Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications.

README for OpenImageIO Introduction The primary target audience for OIIO is VFX studios and developers of tools such as renderers, compositors, viewer

OpenImageIO 1.6k Jan 2, 2023
You can use this to compile the code and output images into a word doc for assignment purposes

Code_n_Ouput_to_docx You can use this to compile the code and output images into a word doc for assignment purposes Basic requirements: Python 3.7 or

Aaditya Prabu K 0 Aug 21, 2022
An open source library for face detection in images. The face detection speed can reach 1000FPS.

libfacedetection This is an open source library for CNN-based face detection in images. The CNN model has been converted to static variables in C sour

Shiqi Yu 11.4k Jan 8, 2023
Convert images to ASCII art.

Image-to-ascii Convert images to ASCII art. This program using stb library to load images. Usage Usage: compile the program to get *.out file

Abdeljalil Bouchfar 13 Aug 20, 2022
Very fast C++ .PNG writer for 24/32bpp images.

fpng Very fast C++ .PNG writer for 24/32bpp images. fpng.cpp was written to see just how fast you can write .PNG's without sacrificing too much compre

Rich Geldreich 639 Dec 25, 2022
Make It Pixel is a programming language to process images to look like pixel art.

Make images look like pixel art Make It Pixel is a programming language to process images to look like pixel art. Its interpreter is written in C++ an

null 21 Nov 24, 2022
Given a set of images, LeastAverageImage generates the least average -- the opposite of the average.

LeastAverageImage Given a set of images, LeastAverageImage generates the least average -- the opposite of the average. More information about the prog

Andrew Eckel 6 Nov 27, 2022
A simple pixel-wise image comparator

imgcmp A simple pixel-wise image comparator. This tool compares between two images pixel by pixel. The features of this tool are minimal since it is d

Yetman 11 Nov 15, 2022
Simple image to ASCII art converter

ascii-art Simple image to ASCII art converter for Windows. Does not support gifs (for now). Usage Unzip the .zip folder from the releases and put your

Mattias Aksli 2 Jul 13, 2022