tev
High dynamic range (HDR) image viewer for people who care about colors
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
Repository
High dynamic range (HDR) image viewer for people who care about colors
Basic Info
Statistics
- Stars: 1,243
- Watchers: 18
- Forks: 107
- Open Issues: 27
- Releases: 37
Topics
Metadata Files
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.
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_HEICCMake 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
- Website: tom94.me
- Repositories: 7
- Profile: https://github.com/Tom94
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
Top Committers
| Name | 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
Pull Request Labels
Dependencies
- actions/checkout v1 composite
- actions/upload-artifact v3 composite