Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
7a7a103
add some more detailed performance tracking and drop some non require…
kleinicke Jun 18, 2026
74ed311
implement some speedups, especially for tiff images.
kleinicke Jun 18, 2026
beeac32
adding some optimizations, one is adding webgl for tiff rendering
kleinicke Jun 18, 2026
2cd159d
Optimize large float image rendering
kleinicke Jun 18, 2026
5c6773f
Fix NPY WebGL render path
kleinicke Jun 18, 2026
f30f566
Expand GPU float render fast paths
kleinicke Jun 18, 2026
6449904
Remove legacy mask filter pipeline
kleinicke Jun 18, 2026
64d0112
Add GPU paths for HDR and 16-bit images
kleinicke Jun 18, 2026
408a1b8
Avoid idle layer readbacks for image switching
kleinicke Jun 18, 2026
0919216
Add Rust WASM EXR decode path
kleinicke Jun 18, 2026
1eedada
Match EXR Rust decode visual output
kleinicke Jun 18, 2026
4a931d6
Tighten large image decode handoff
kleinicke Jun 18, 2026
08d18e5
Add Rust PNG16 decode path
kleinicke Jun 19, 2026
bbfda35
Stabilize histogram stats layout
kleinicke Jun 19, 2026
7f11edb
Keep histogram stats compact
kleinicke Jun 19, 2026
18dec5c
Add detailed render timing metrics
kleinicke Jun 19, 2026
4dcf8d9
Split worker fetch timing and speed PPM parsing
kleinicke Jun 19, 2026
fb201f1
Add GPU toggle and previous image cache
kleinicke Jun 19, 2026
cda4073
Fix NPY NaN color mapping
kleinicke Jun 19, 2026
b9a7311
Show NPY non-finite pixel values
kleinicke Jun 19, 2026
489d428
Improve switch metrics and TIFF restore cache
kleinicke Jun 19, 2026
d5ce36e
Trace layer image additions
kleinicke Jun 19, 2026
b1b7948
Trace direct image opens
kleinicke Jun 19, 2026
ee44d7c
Reduce layer add and opacity lag
kleinicke Jun 20, 2026
54a27da
Speed up normal layer compositing
kleinicke Jun 20, 2026
a74aa7b
Fix layer redraw after WebGL render
kleinicke Jun 20, 2026
ccf3ac2
Require second click to remove layers
kleinicke Jun 20, 2026
731bbe7
Speed up HDR decode and WebGL validation
kleinicke Jun 20, 2026
c1cad72
v1.8.0
kleinicke Jun 20, 2026
f170515
Hide detailed performance traces by default
kleinicke Jun 20, 2026
a336e90
Restore concise collection and layer timings
kleinicke Jun 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,26 @@ Inspect high-bit-depth, floating-point, scientific, and camera image files direc

Supports TIFF, EXR, NPY/NPZ, PNG, JPEG, WebP, AVIF, HDR, JXL, TGA, BMP, ICO, PPM, PFM, PBM and PGM.

The viewer supports 8-bit and 16-bit integer images as well as 16-bit and 32-bit floating-point images. You can inspect exact pixel values, normalize image data to custom ranges, adjust gamma and brightness, compare images, and export the current visualization as PNG.
The viewer supports 8-bit and 16-bit integer images as well as 16-bit and 32-bit floating-point images. You can inspect exact pixel values, normalize image data to custom ranges, adjust gamma and brightness, compare images, and export the current visualization as PNG. Uses rust for decoding several formats and the gpu for rendering to provide the fastest possible extension.

![tiff-visualizer](https://github.com/kleinicke/tiff-visualizer/releases/download/v1.0.0/TiffVisualizerVSCode.gif)

## Supported Sample Types
## Supported Sample Types


| Format | uint8 | uint16 | float16 | float32 | Notes |
|---|---:|---:|---:|---:|---|
| TIFF | Yes | Yes | Yes | Yes | Decoded by a Rust/WASM decoder by default (uint8/16/32, int, float16/32/64); geotiff.js is a fallback for 24-bit grayscale mode and TIFF variants the Rust decoder can't handle |
| EXR | No | No | Yes | Yes | HDR floating-point format |
| NPY/NPZ | Yes | Yes | Yes | Yes | Also supports float64 and int8/16/32/64, uint32/64 |
| PFM | No | No | No | Yes | Portable Float Map |
| HDR | No | No | No | Yes | Radiance RGBE, decoded to float32 |
| PNG | Yes | Yes | No | No | Palette PNGs become 8-bit RGBA |
| PPM/PGM/PBM | Yes | Yes | No | No | PBM is 1-bit, shown as 8-bit |
| JPEG/WebP/AVIF/BMP/ICO/TGA/JXL | Yes | No | No | No | Decoded as 8-bit image data in the extension |
| Format | uint8 | uint16 | float16 | float32 | Notes |
| ------------------------------ | ----: | -----: | ------: | ------: | --------------------------------------------------------------------------- |
| TIFF | Yes | Yes | Yes | Yes | Decoded by a Rust/WASM decoder by default (uint8/16/32, int, float16/32/64) |
| EXR | No | No | Yes | Yes | HDR floating-point format |
| NPY/NPZ | Yes | Yes | Yes | Yes | Also supports float64 and int8/16/32/64, uint32/64 |
| PFM | No | No | No | Yes | Portable Float Map |
| HDR | No | No | No | Yes | Radiance RGBE, decoded to float32 |
| PNG | Yes | Yes | No | No | Palette PNGs become 8-bit RGBA |
| PPM/PGM/PBM | Yes | Yes | No | No | PBM is 1-bit, shown as 8-bit |
| JPEG/WebP/AVIF/BMP/ICO/TGA/JXL | Yes | No | No | No | Decoded as 8-bit image data in the extension |

## Features

- **Fast and versatile TIFF Support**: Fast TIFF decoding using ![Rust](https://github.com/image-rs/image-tiff). Opens high-bit-depth, floating-point, multi-channel, and compressed TIFF files.
- **Advanced TIFF Support**: Opens high-bit-depth, floating-point, multi-channel, and compressed TIFF files. Fast TIFF loading via Rust/WebAssembly, with geotiff.js fallback for compatibility.
- **Scientific Image Inspection**: Inspect uint8, uint16, float16, and float32 image data in grayscale, RGB, and RGBA images.
- **Interactive Pixel Values**: Hover over any pixel to see its exact value in the status bar. For multi-channel images, all channel values are displayed.
Expand All @@ -32,8 +32,8 @@ The viewer supports 8-bit and 16-bit integer images as well as 16-bit and 32-bit
- **Histogram View**: Show a histogram overlay to inspect the current image distribution while tuning the visualization.
- **Image Collections**: Group related images in one preview and quickly move between them without opening a tab for every file. Add individual images, folders, paths, or wildcard matches from the command palette and editor context menu.
![collection](https://github.com/kleinicke/tiff-visualizer/releases/download/v1.0.0/Collection.gif)
- **Layers View**: Open one or more images in a dedicated Layers window for compositing and visual comparison.
Easily get the difference between two images or apply a mask onto one. This layer view allows dedicated compositions between multiple images.
- **Layers View**: Open one or more images in a dedicated Layers window for compositing and visual comparison.
Easily get the difference between two images or apply a mask onto one. This layer view allows dedicated compositions between multiple images.
- **NaN Color**: Choose how NaN values are displayed.
- **Session-Wide Settings**: A single VS Code window keeps visualization settings across opened images.
- **Export and Copy**: Export the current visualization as PNG, copy the image, or copy image zoom level to the clipboard to paste onto other image.
Expand Down
Loading
Loading