![]() |
VOOZH | about |
dotnet add package TinyEXR.NET --version 1.0.0
NuGet\Install-Package TinyEXR.NET -Version 1.0.0
<PackageReference Include="TinyEXR.NET" Version="1.0.0" />
<PackageVersion Include="TinyEXR.NET" Version="1.0.0" />Directory.Packages.props
<PackageReference Include="TinyEXR.NET" />Project file
paket add TinyEXR.NET --version 1.0.0
#r "nuget: TinyEXR.NET, 1.0.0"
#:package TinyEXR.NET@1.0.0
#addin nuget:?package=TinyEXR.NET&version=1.0.0Install as a Cake Addin
#tool nuget:?package=TinyEXR.NET&version=1.0.0Install as a Cake Tool
TinyEXR.NET is a pure C# port library of tinyexr
The target frameworks are net8.0, netstandard2.1
TinyEXR.NET can be found on NuGet 👁 NuGet
(← click it !)
The net8.0 target has no additional runtime dependencies.
The netstandard2.1 target depends on SharpZipLib.
LoadDeepEXR.NONE, RLE, ZIP, ZIPS, PIZ, PXR24, B44, and B44A.NONE, RLE, ZIPS, and ZIP.EXRLayers and LoadEXRWithLayer, including RGBA expansion for subsampled channels in the convenience load path.TinyEXR.NET keeps its public API almost identical to tinyexr v1, so most functions and data structures can be mapped directly from the original library. The main differences are a small number of C#-oriented interfaces designed to avoid raw pointer-based usage and provide a more natural managed API surface.
Example:
ResultCode load = Exr.LoadEXR(inputPath, out float[] rgba, out int width, out int height);
if (load != ResultCode.Success)
{
throw new InvalidOperationException($"LoadEXR failed: {load}");
}
The repository currently includes TinyEXR.Viewer, an Avalonia sample built on top of TinyEXR.NET.
The viewer is intended for manual EXR inspection: it can open EXR files from the file picker, drag and drop, or a command-line path, preview single-part images and pure-image multipart files, switch between parts/layers/levels when decoded image data is available, and display metadata such as version flags, windows, tile information, channels, custom attributes, and deep-image statistics.
See Samples/TinyEXR.Viewer/README.md for run instructions and the current feature boundaries.
The current test suite covers the main supported surface of the library across both target outputs: the default target path and the netstandard2.1 fallback path run the same shared test cases.
See Test/README.md for the current test layout and execution details.
The repository includes memory-only benchmarks for the main read/write paths. Sample files are loaded during setup, so the timed results reflect decode/encode work on in-memory buffers rather than filesystem IO.
Updated on 2026-05-03. C# results use BenchmarkDotNet Mean; C++ baseline results use the Google Benchmark CPU column.
13th Gen Intel Core i7-13700K 3.40GHzWindows 11 25H2 10.0.26200.824610.0.203 / 10.0.7BenchmarkDotNet 0.15.8, default job, workstation GCMSVC 19.50.35730, Visual Studio 2026 18.5.2| Method | Sample | C# mean | C# allocated | C++ baseline | Managed / baseline |
|---|---|---|---|---|---|
LoadEXRFromMemory |
desk_scanline |
40.05 ms |
15.73 MB |
38.65 ms |
1.04x |
SaveEXRToMemory |
desk_scanline |
108.77 ms |
46.56 MB |
164.06 ms |
0.66x |
LoadEXRImageFromMemory |
desk_scanline |
23.43 ms |
7.15 MB |
28.65 ms |
0.82x |
SaveEXRImageToMemory |
desk_scanline |
43.48 ms |
80.90 MB |
41.36 ms |
1.05x |
LoadEXRImageFromMemory |
kapaa_multires |
42.94 ms |
21.27 MB |
55.40 ms |
0.78x |
SaveEXRImageToMemory |
kapaa_multires |
169.49 ms |
53.54 MB |
213.54 ms |
0.79x |
LoadEXRMultipartImageFromMemory |
beachball_multipart_0001 |
82.74 ms |
30.65 MB |
127.60 ms |
0.65x |
SaveEXRMultipartImageToMemory |
beachball_multipart_0001 |
213.06 ms |
78.32 MB |
223.96 ms |
0.95x |
LoadDeepImageFromMemory |
balls_deep_scanline |
14.19 ms |
5.47 MB |
N/A |
N/A |
See Benchmark/README.md for more details.
Starting with v1.0, TinyEXR.NET is a pure C# implementation of the tinyexr-compatible API surface.
The legacy v0.3.x line is kept as a maintenance branch. It may continue to receive compatibility fixes and follow tinyexr updates when needed, but no new features will be added to v0.3.x.
The main branch moves forward with v1.0+.
For new development, prefer the mainline v1.0+ branch. Use the v0.3.x maintenance branch only if you need the legacy native-wrapper line for compatibility reasons.
LoadEXR, LoadEXRFromMemory, SaveEXR, SaveEXRToMemory, LoadEXRWithLayer, and EXRLayers are still the recommended entry points, so code that only uses these helpers usually needs little or no change.IsExr and IsExrFromMemory are now IsEXR and IsEXRFromMemory.TinyEXR.Native.* and TinyEXR.Native.EXRNative are gone. The library is now a pure managed C# implementation, so the old native-runtime, P/Invoke, and static-link workflow from v0.3.x no longer applies.ExrVersion, ExrHeader, ExrImage, ExrMultipartHeader, ExrMultipartImage, ExrDeepImage, and ExrBox2i.out-based APIs instead of ref-based native mutation. For example, ParseEXRHeaderFromFile(path, ref version, ref header) becomes ParseEXRHeaderFromFile(path, out ExrVersion version, out ExrHeader header), and LoadEXRImageFromFile(ref image, ref header, path) becomes LoadEXRImageFromFile(path, header, out ExrImage image).SaveEXRImageToMemory also changed shape: v0.3.x returned byte[]?, while the current API returns ResultCode and writes the payload to out byte[] encoded.Mixed multipart files that include deep or non-image parts are currently metadata-only for those parts; full image decode is supported for image parts.
TinyEXR.NET is under MIT license
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 netstandard2.1 is compatible. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 3 NuGet packages that depend on TinyEXR.NET:
| Package | Downloads |
|---|---|
|
ValveResourceFormat
Parser, decompiler, and exporter for Valve's Source 2 resource file formats. Supports models, textures, materials, maps, particles, and more. |
|
|
Aardvark.GeoSpatial.Opc
Aardvark.GeoSpatial.Opc formerly known as Aardvark.VRVis.Internal |
|
|
UAI_ONNX
ONNX Runner built for C# projects that target .Net8.0 or later. This library is built on top of the ONNX Runtime C# API and provides a simple way to load and run ONNX models in C#. |
Showing the top 1 popular GitHub repositories that depend on TinyEXR.NET:
| Repository | Stars |
|---|---|
|
ValveResourceFormat/ValveResourceFormat
Source 2 Viewer is an all-in-one tool to browse VPK archives, view, extract, and decompile Source 2 assets, including maps, models, materials, textures, sounds, and more.
|
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 981 | 5/3/2026 |
| 1.0.0-rc1 | 110 | 4/21/2026 |
| 0.3.13 | 161 | 4/18/2026 |
| 0.3.12 | 123 | 4/17/2026 |
| 0.3.11 | 17,044 | 8/14/2025 |
| 0.3.10 | 3,357 | 4/27/2025 |
| 0.3.9 | 1,053 | 2/13/2025 |
| 0.3.8 | 2,415 | 9/17/2024 |
| 0.3.7 | 1,284 | 8/4/2024 |
| 0.3.6 | 1,142 | 2/23/2024 |
| 0.3.5 | 508 | 8/7/2023 |
| 0.3.4 | 448 | 7/9/2023 |
| 0.3.3 | 335 | 6/6/2023 |
| 0.3.2 | 613 | 4/19/2023 |
| 0.3.1 | 401 | 4/4/2023 |
| 0.2.3 | 810 | 8/19/2022 |
| 0.2.2 | 611 | 8/16/2022 |
| 0.2.1 | 858 | 8/15/2022 |
| 0.2.0 | 587 | 8/14/2022 |
| 0.1.1 | 622 | 7/24/2022 |
First stable v1.0 release. TinyEXR.NET is now a pure managed C# implementation of the tinyexr-compatible API, with NativeAOT support, net8.0/netstandard2.1 targets, scanline/tiled/multipart/deep EXR coverage, compression support, expanded tests, benchmarks, and a viewer sample.