tev

High dynamic range (HDR) image viewer for people who care about colors

https://github.com/tom94/tev

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.6%) to scientific vocabulary

Keywords

exr hdr image image-comparison macos openexr openexr-images rendering screenshot tev
Last synced: 6 months ago · JSON representation ·

Repository

High dynamic range (HDR) image viewer for people who care about colors

Basic Info
  • Host: GitHub
  • Owner: Tom94
  • License: gpl-3.0
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 6.02 MB
Statistics
  • Stars: 1,243
  • Watchers: 18
  • Forks: 107
  • Open Issues: 27
  • Releases: 37
Topics
exr hdr image image-comparison macos openexr openexr-images rendering screenshot tev
Created over 8 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

tev — The EDR Viewer   

High dynamic range (HDR) image viewer for people who care about colors.

  • Lightning fast: starts up instantly, loads hundreds of images in seconds.
  • Accurate: understands HDR and color profiles (ICC, CICP, etc.). Displays HDR on all operating systems.
  • Versatile: supports many file formats, histograms, pixel-peeping, tonemaps, error metrics, etc.

Screenshot A false-color comparison of two multi-layer OpenEXR images of a beach ball. Image courtesy of openexr-images.

Installation

Download tev for - Windows: Installer (.msi), portable executable (.exe) - Linux: AppImage (.appimage) (how to run AppImages) - macOS: Installer (.dmg)

Or install tev via package managers:

macOS

bash brew install --cask tev

Arch Linux (Arch User Repository)

bash yay -S tev

NixOS

```nix

In your inputs

inputs = { ... tev = { url = "https://github.com/tom94/tev"; type = "git"; submodules = true; }; };

In your configuration

environment.systemPackages = with pkgs; [ ... inputs.tev.packages.${system}.default ]; ```

Install from source

Or build and install tev from source. See the building tev section below for details. TL;DR: sh $ git clone --recursive https://github.com/Tom94/tev $ cmake . -B build $ cmake --build build --config Release -j $ cmake --install build

Usage

Graphical User Interface

Images can be opened via a file dialog or by dragging them into tev. They can be reloaded, closed, or filtered at any time, so don't worry about opening more images than exactly needed.

Select an image by left-clicking it, and optionally select a reference image to compare the current selection to by right-clicking. For convenience, the current selection can be moved with the Up/Down or the 1-9 keys. For a comprehensive list of keyboard shortcuts click the little "?" icon at the top (or press "h") or view this online visualization.

If the interface seems overwhelming, you can hover any controls to view an explanatory tooltip.

Command Line

tev takes images as positional command-line arguments: sh $ tev foo.exr bar.exr

By default, all layers and channels are loaded, but individual layers or channels can also be specified. In the following example, the depth layer of foo.exr and the r, g, and b channels of foo.exr and bar.exr are loaded. sh $ tev :depth foo.exr :r,g,b foo.exr bar.exr

Other command-line arguments exist (e.g. for starting tev with a pre-set exposure value). For a list of all arguments simply invoke sh $ tev -h

Over the Network

tev can also be controlled remotely over the network using a simple TCP-based protocol.

The --host argument specifies the IP and port tev is listening to. By default, tev only accepts connections from localhost (127.0.0.1:14158), which is useful, for example, as frontend for a supported renderer like pbrt version 4.

The following operations exist:

| Operation | Function | :--- | :---------- | OpenImage | Opens an image from a specified path on the machine tev is running on. | CreateImage | Creates a blank image with a specified name, size, and set of channels. If an image with the specified name already exists, it is overwritten. | UpdateImage | Updates the pixels in a rectangular region. | CloseImage | Closes a specified image. | ReloadImage | Reloads an image from a specified path on the machine tev is running on. | VectorGraphics | Draws vector graphics over a specified image.

tev's network protocol is already implemented in the following languages: - C++ (by Simon Kallweit) - Python (initial implementation by Tomáš Iser) - pip install tevclient - Rust (by Karel Peeters)

If using these implementations is not an option, it's easy to write your own one. Each packet has the simple form [uint32_t total_length_in_bytes][byte operation_type][byte[] operation_specific_payload] where integers are encoded in little endian.

There are helper functions in Ipc.cpp (IpcPacket::set*) that show exactly how each packet has to be assembled. These functions do not rely on external dependencies, so you can copy and paste them into your project to interface with tev.

Building tev

All that is required for building tev is CMake and a C++20-compatible compiler. On Windows, that's Visual Studio 2019 and newer. On Linux and macOS, your system's GCC or Clang compiler is likely sufficient.

Most Linux distributions additionally require xorg, wayland, gl, and dbus. On Ubuntu/Debian simply call sh $ apt-get install cmake libdbus-1-dev libffi-dev libglu1-mesa-dev libwayland-dev libxkbcommon-dev nasm wayland-protocols xorg-dev

Once all dependencies are installed, begin by cloning this repository and all its submodules using the following command: sh $ git clone --recursive https://github.com/Tom94/tev

Then, use CMake as follows: sh $ cmake . -B build $ cmake --build build --config Release -j

Afterwards, tev can be installed via sh $ cmake --install build or you can create a standalone installer (Windows, macOS) / AppImage (Linux) with sh $ cpack --config build/CPackConfig.cmake

File Formats

  • EXR (via OpenEXR)
  • Ultra HDR JPEG (e.g. pictures from newer Android phones; via libultrahdr)
  • JPEG XL (via libjxl. Shoutout to Johnathon Selstad for adding support!)
    • Supports both lossy and lossless compression with full HDR capabilities
  • JPEG (via libjpeg-turbo)
  • PNG, APNG (via libpng)
  • PFM (compatible with Netbpm)
  • QOI (via qoi. Shoutout to Tiago Chaves for adding support!)
  • DDS (via DirectXTex; Windows only. Shoutout to Craig Kolb for adding support!)
    • Supports BC1-BC7 compressed formats.
  • WEBP (via libwebp)
  • TIFF, DNG (via libtiff; only some DNG files supported)
  • AVIF (via aom+libheif)
  • HEIC (e.g. pictures from iPhones; via libde265+libheif; disabled in binary release. You must build tev yourself with the TEV_SUPPORT_HEIC CMake option. Check patent laws in your jurisdiction before enabling this feature.)
  • HDR, BMP, GIF, PIC, PNM, PSD, TGA (via stb_image)

License

tev is available under the GPLv3 license, which you can find in the LICENSE.txt file. TL;DR.

Older versions of tev (v1.30 and earlier) are available under the BSD 3-Clause license. If required, use git tags to check out these older versions.

Owner

  • Name: Thomas Müller
  • Login: Tom94
  • Kind: user
  • Location: Zürich, Switzerland
  • Company: NVIDIA

Principal research scientist @ NVIDIA. Passionate about AI, video games, computer graphics, OSS, etc.

Citation (CITATION.cff)

cff-version: 1.2.0
title: tev --- The EDR Viewer
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Thomas
    email: contact@tom94.net
    family-names: Müller
repository-code: 'https://github.com/Tom94/tev'
abstract: >-
  High dynamic range (HDR) image viewer for people who care about colors. It is
  - Lightning fast: starts up instantly, loads hundreds of images in seconds.
  - Accurate: understands color profiles and displays HDR.
  - Versatile: supports many formats, histograms, pixel peeping, tonemaps, etc.
keywords:
  - 'image, rendering, hdr, ldr, exr, openexr, comparison, screenshot'
license: GPL-3.0-only
version: 2.0
date-released: '2017-08-26'

GitHub Events

Total
  • Create event: 70
  • Commit comment event: 2
  • Release event: 6
  • Issues event: 38
  • Watch event: 153
  • Delete event: 50
  • Issue comment event: 74
  • Push event: 334
  • Pull request review event: 11
  • Pull request review comment event: 10
  • Pull request event: 134
  • Fork event: 15
Last Year
  • Create event: 70
  • Commit comment event: 2
  • Release event: 6
  • Issues event: 38
  • Watch event: 153
  • Delete event: 50
  • Issue comment event: 74
  • Push event: 334
  • Pull request review event: 11
  • Pull request review comment event: 10
  • Pull request event: 134
  • Fork event: 15

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,183
  • Total Committers: 24
  • Avg Commits per committer: 49.292
  • Development Distribution Score (DDS): 0.038
Past Year
  • Commits: 259
  • Committers: 6
  • Avg Commits per committer: 43.167
  • Development Distribution Score (DDS): 0.023
Top Committers
Name Email Commits
Thomas Müller t****4@g****t 1,138
Alexander Rath a****x@i****l 8
Tobias Rittig t****s@c****z 5
Wouter w****r@g****m 4
Anders Langlands a****s@g****m 3
Merlin Nimier-David m****r@g****m 3
Tiago Chaves t****s@g****m 3
Johnathon Selstad m****d@g****m 2
Matt Pharr m****t@p****g 2
Fabrice Rousselle f****e@n****m 1
Sebastien Speierer s****s@m****m 1
Thijs t****s@d****m 1
Brandon Tebedo b****o@g****m 1
Craig Kolb c****b@n****m 1
Delio Vicini d****i@g****m 1
Kenshi Takayama k****4@g****m 1
Kevin Masson c****n@g****m 1
Miguel Crespo m****s@g****m 1
Nick Steel n****k@n****k 1
Reiner Dolp 7****p 1
Xianyao Zhang 1****H 1
linhsu0723 l****3@q****m 1
Wagyx w****w@g****m 1
Zack Palmer z****k@o****z 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 94
  • Total pull requests: 237
  • Average time to close issues: 5 months
  • Average time to close pull requests: 15 days
  • Total issue authors: 66
  • Total pull request authors: 27
  • Average comments per issue: 2.4
  • Average comments per pull request: 0.53
  • Merged pull requests: 212
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 22
  • Pull requests: 110
  • Average time to close issues: 22 days
  • Average time to close pull requests: about 5 hours
  • Issue authors: 15
  • Pull request authors: 9
  • Average comments per issue: 1.45
  • Average comments per pull request: 0.25
  • Merged pull requests: 97
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • dvicini (5)
  • wojtuss (5)
  • mmp (4)
  • diiigle (4)
  • LogWell (3)
  • MKimiSH (3)
  • Tom94 (3)
  • tomasiser (3)
  • dernett (2)
  • sergio-sancho (2)
  • futuremotiondev (2)
  • ommaury (2)
  • roflmaostc (2)
  • kunaltyagi (2)
  • hb3p8 (1)
Pull Request Authors
  • Tom94 (202)
  • iRath96 (4)
  • chaosink (4)
  • diiigle (3)
  • merlinND (2)
  • laurelkeys (2)
  • kenshi84 (2)
  • Wagyx (2)
  • MKimiSH (2)
  • a-e-k (2)
  • zalo (1)
  • Speierers (1)
  • sunzhuoshi (1)
  • jammm (1)
  • oktomus (1)
Top Labels
Issue Labels
bug (2) wontfix (1) help wanted (1) feature request (1) enhancement (1)
Pull Request Labels

Dependencies

.github/workflows/main.yml actions
  • actions/checkout v1 composite
  • actions/upload-artifact v3 composite