{"id":15036015,"url":"https://github.com/tom94/tev","last_synced_at":"2025-04-13T08:57:06.726Z","repository":{"id":24563253,"uuid":"101478952","full_name":"Tom94/tev","owner":"Tom94","description":"High dynamic range (HDR) image viewer for graphics people","archived":false,"fork":false,"pushed_at":"2025-03-21T07:17:06.000Z","size":4831,"stargazers_count":1175,"open_issues_count":32,"forks_count":99,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-12T23:42:55.194Z","etag":null,"topics":["exr","hdr","image","image-comparison","macos","openexr","openexr-images","rendering","screenshot","tev"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tom94.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-08-26T10:28:43.000Z","updated_at":"2025-04-12T14:01:58.000Z","dependencies_parsed_at":"2023-02-15T23:00:43.260Z","dependency_job_id":"dc3a1052-850b-40aa-b09b-a109fbd51fdf","html_url":"https://github.com/Tom94/tev","commit_stats":{"total_commits":944,"total_committers":20,"mean_commits":47.2,"dds":0.0423728813559322,"last_synced_commit":"f655a65312f6e75b78330a9f5175fbf1020d49a4"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tom94%2Ftev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tom94%2Ftev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tom94%2Ftev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tom94%2Ftev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tom94","download_url":"https://codeload.github.com/Tom94/tev/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248688543,"owners_count":21145764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exr","hdr","image","image-comparison","macos","openexr","openexr-images","rendering","screenshot","tev"],"created_at":"2024-09-24T20:29:56.268Z","updated_at":"2025-04-13T08:57:06.704Z","avatar_url":"https://github.com/Tom94.png","language":"C++","readme":"# tev — The EXR Viewer \u0026nbsp;\u0026nbsp; ![](https://github.com/tom94/tev/workflows/CI/badge.svg)\n\nImage viewer and comparison tool for graphics people.\n\n- __Lightning fast:__ starts up instantly, loads hundreds of images in seconds.\n- __Versatile:__ supports many [file formats](#file-formats), tonemapping operators, error metrics, histograms, and pixel peeping.\n- __HDR:__ displays true HDR on Apple EDR displays.\n\n\n![Screenshot](resources/screenshot.png)\n_A false-color comparison of two multi-layer OpenEXR images of a beach ball. Image courtesy of [openexr-images](https://github.com/openexr/openexr-images)._\n\n## Installation\n\n### Windows\n\nDownload the __tev__ executable (.exe) from the [releases page](https://github.com/Tom94/tev/releases).\n\n### macOS\n\nDownload the __tev__ application (.dmg) from the [releases page](https://github.com/Tom94/tev/releases) or install it via homebrew.\n```bash\nbrew install --cask tev\n```\n\n### Linux\n\nDownload the __tev__ application (.appimage) from the [releases page](https://github.com/Tom94/tev/releases).\nSee [how to run AppImages](https://appimage.org/).\nOr use one of the alternative methods below:\n\nArch Linux (Arch User Repository):\n```bash\nyay -S tev\n```\n\nNixOS:\n```nix\n# In your inputs\ninputs = {\n  ...\n  tev = { url = \"https://github.com/tom94/tev\"; type = \"git\"; submodules = true; };\n};\n\n# In your configuration\nenvironment.systemPackages = with pkgs; [\n  ...\n  inputs.tev.packages.${system}.default\n];\n```\n\n## Usage\n\n### Graphical User Interface\n\nImages can be opened via a file dialog or by dragging them into __tev__.\nThey can be reloaded, closed, or filtered at any time, so don't worry about opening more images than exactly needed.\n\nSelect an image by left-clicking it, and optionally select a reference image to compare the current selection to by right-clicking.\nFor 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](https://keycombiner.com/collecting/collections/shared/f050cc02-f23a-425c-b032-b4c3659c7ef4).\n\nIf the interface seems overwhelming, you can hover any controls to view an explanatory tooltip.\n\n### Command Line\n\n__tev__ takes images as positional command-line arguments:\n```sh\n$ tev foo.exr bar.exr\n```\n\nBy 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.\n```sh\n$ tev :depth foo.exr :r,g,b foo.exr bar.exr\n```\n\nOther command-line arguments exist (e.g. for starting __tev__ with a pre-set exposure value). For a list of all arguments simply invoke\n```sh\n$ tev -h\n```\n\n### Over the Network\n\n__tev__ can also be controlled remotely over the network using a simple TCP-based protocol.\n\nThe `--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](https://github.com/mmp/pbrt-v4).\n\nThe following operations exist:\n\n| Operation | Function\n| :--- | :----------\n| `OpenImage` | Opens an image from a specified path on the machine __tev__ is running on.\n| `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.\n| `UpdateImage` | Updates the pixels in a rectangular region.\n| `CloseImage` | Closes a specified image.\n| `ReloadImage` | Reloads an image from a specified path on the machine __tev__ is running on.\n| `VectorGraphics` | Draws vector graphics over a specified image.\n\n__tev__'s network protocol is already implemented in the following languages:\n- [Python](src/python/tev.py) by Tomáš Iser\n- [Rust](https://crates.io/crates/tev_client) by Karel Peeters\n\n\nIf using these implementations is not an option, it's easy to write your own one. Each packet has the simple form\n```\n[uint32_t total_length_in_bytes][byte operation_type][byte[] operation_specific_payload]\n```\nwhere integers are encoded in little endian.\n\nThere are helper functions in [Ipc.cpp](src/Ipc.cpp) (`IpcPacket::set*`) that show exactly how each packet has to be assembled. These functions do not rely on external dependencies, so it is recommended to copy and paste them into your project for interfacing with __tev__.\n\n\n## Building tev\n\nAll that is required for building __tev__ is [CMake](https://cmake.org/) 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.\n\nMost Linux distributions additionally require _xorg_, _gl_, _zlib_, and _zenity_. On Ubuntu/Debian simply call\n```sh\n$ apt-get install cmake xorg-dev libglu1-mesa-dev zlib1g-dev zenity\n```\n\nOnce all dependencies are installed, begin by cloning this repository and all its submodules using the following command:\n```sh\n$ git clone --recursive https://github.com/Tom94/tev\n```\n\nThen, use [CMake](https://cmake.org/) as follows:\n```sh\n$ cmake . -B build\n$ cmake --build build --config Release -j\n```\n\nAfterwards, __tev__ can be installed via\n```sh\n$ cmake --install build\n```\nor you can create a standalone installer (Windows, macOS) / [AppImage](https://appimage.org/) (Linux) with\n```sh\n$ cpack --config build/CPackConfig.cmake\n```\n\n## File Formats\n\n- __EXR__ (via [OpenEXR](https://github.com/wjakob/openexr))\n- __HDR__, __PNG__, __JPEG__, BMP, GIF, PIC, PNM, PSD, TGA (via [stb_image](https://github.com/wjakob/nanovg/blob/master/src/stb_image.h))\n- __Ultra HDR JPEG__ (e.g. pictures from newer Android phones; via [libultrahdr](https://github.com/google/libultrahdr))\n- __PFM__ (compatible with [Netbpm](http://www.pauldebevec.com/Research/HDR/PFM/))\n- __QOI__ (via [qoi](https://github.com/phoboslab/qoi). Shoutout to [Tiago Chaves](https://github.com/laurelkeys) for adding support!)\n- __DDS__ (via [DirectXTex](https://github.com/microsoft/DirectXTex); Windows only. Shoutout to [Craig Kolb](https://github.com/cek) for adding support!)\n    - Supports BC1-BC7 compressed formats.\n- __AVIF__ (via [aom](https://aomedia.googlesource.com/aom)+[libheif](https://github.com/strukturag/libheif))\n- __HEIC__ (via [libde265](https://github.com/strukturag/libde265)+[libheif](https://github.com/strukturag/libheif); disabled in binary release. You must build __tev__ yourself with the `TEV_SUPPORT_HEIC` CMake option. Check patent laws in your juristiction before enabling this feature.)\n\n## License\n\n__tev__ is available under the GPLv3 license, which you can find in the `LICENSE.txt` file.\n[TL;DR](https://www.tldrlegal.com/license/gnu-general-public-license-v3-gpl-3).\n\nOlder versions of __tev__ (v1.30 and earlier) are available under the BSD 3-Clause license.\nIf required, use git tags to check out these older versions.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftom94%2Ftev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftom94%2Ftev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftom94%2Ftev/lists"}