SharpAstro.Exif 3.8.691

This package has a SemVer 2.0.0 package version: 3.8.691+c7cc15dbeff1becd13165c0b673c6aab4e6c4a32.
dotnet add package SharpAstro.Exif --version 3.8.691
                    
NuGet\Install-Package SharpAstro.Exif -Version 3.8.691
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SharpAstro.Exif" Version="3.8.691" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SharpAstro.Exif" Version="3.8.691" />
                    
Directory.Packages.props
<PackageReference Include="SharpAstro.Exif" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SharpAstro.Exif --version 3.8.691
                    
#r "nuget: SharpAstro.Exif, 3.8.691"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SharpAstro.Exif@3.8.691
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SharpAstro.Exif&version=3.8.691
                    
Install as a Cake Addin
#tool nuget:?package=SharpAstro.Exif&version=3.8.691
                    
Install as a Cake Tool

SharpAstro Codecs

NuGet CI/CD

A family of pure-managed, AOT-compatible image-codec packages for .NET 10 — no native binaries. Each format ships as an independent NuGet, and SharpAstro.Codecs is a thin facade that sniffs a byte stream by its magic bytes and dispatches to the right decoder, so a consumer can reference one package instead of cherry-picking codecs.

Format Decode Encode Notes
PNG 8/16-bit RGBA/Gray, ICC + HDR chunks (cICP / mDCv / cLLI)
JPEG baseline + progressive; scaled 1/2–1/8 LOD decode; baseline encode. Plus lossless JPEG (T.81 Annex H) as a separate decoder
Ultra HDR gain-map JPEG; decodes transparently through the facade — float path is HDR, 8-bit path the SDR base
TIFF multi-page, 8/16/32-bit uint + float, Deflate/Zlib
JPEG XR jxrlib-exact — codestream byte-identical to the reference encoder
OpenEXR scanline, HALF/FLOAT/UINT, NONE/RLE/ZIP/ZIPS/PIZ
JPEG XL clean-room; lossless Modular + lossy VarDCT
JBIG2 bilevel, for PDF's /JBIG2Decode. Every region type T.88 defines, on the arithmetic path
EXIF metadata only, from JPEG / TIFF / PNG

See CODECS.md for the full per-package matrix, what each codec does and does not support, and how to pick the right one. A bundled sRGB ICC profile ships in SharpAstro.Color.Icc for embedding.

All packages target net10.0, are IsAotCompatible, ship SourceLink debugging, and publish in lockstep (shared Major.Minor + CI run-number patch).

NuGet

# One facade for sniff-and-decode (PNG, JPEG incl. Ultra HDR, TIFF, JXR, EXR, JXL, .jb2):
dotnet add package SharpAstro.Codecs

# ...or reference just the format(s) you need:
dotnet add package SharpAstro.Png
dotnet add package SharpAstro.Jxr

Usage

Decode any supported still image through the facade — sniff the header, size a buffer, decode into it:

using SharpAstro.Codecs;

var bytes = File.ReadAllBytes(path);
if (ImageCodecs.TryReadInfo(bytes, out var info))
{
    var rgba = new byte[info.Width * info.Height * 4];
    ImageCodecs.TryDecodeIntoRgba8(bytes, rgba);      // zero-copy into your buffer
    // ...or ImageCodecs.TryDecode(bytes, out IDecodedImage img) for the full-fidelity raster.
}

Each codec is also usable directly — e.g. PngReader / PngWriter, JpegDecoder.Decode / DecodeTo, TiffReader / TiffWriter, JxrImageCodec, ExrImageCodec, JxlImageCodec. See CODECS.md.

JBIG2 is the one format whose main entry point is not the facade. A PDF-embedded JBIG2 stream has no file header to sniff, keeps its shared segment dictionaries in a separate /JBIG2Globals stream, and takes its dimensions from the image dictionary — so those callers pass all three explicitly:

using SharpAstro.Jbig2;

// `embedded` / `globals` are the PDF streams; width/height come from the image dictionary.
var page = Jbig2Decoder.Decode(embedded, globals, width, height);
var bits = page.Bits;        // one byte per pixel, 1 = black (T.88 polarity)
var gray = page.ToGray8();   // ...or the 8-bit projection, black 0 / white 255

Standalone .jb2 files do have a signature, and decode through the facade like anything else — generic, symbol-coded and halftone pages alike.

JBIG2 covers every region type T.88 defines on the arithmetic path: generic regions (both the template coder and MMR / ITU-T T.6, the Group 4 fax coding), refinement regions, symbol dictionaries and text regions, and pattern dictionaries with halftone regions. The Huffman-coded variants (SDHUFF / SBHUFF) are refused rather than guessed at — no available encoder emits them, so an implementation would have nothing to validate itself against.

Building from source

git clone https://github.com/SharpAstro/Codecs
cd Codecs
dotnet build Codecs.JustTests.sln -c Release
dotnet test  Codecs.JustTests.sln -c Release

Requires the .NET 10 SDK.

License

Unlicense (public domain).

Credits

This repository began as a fork of StbSharp/StbImageSharp (Roman Shapiro's C# port of Sean Barrett's stb_image.h, via the Hebron C-to-C# transpiler). SharpAstro.Jpeg's decoder was ported from and validated byte-exact against that reference decoder before the stb port itself was retired from the repo.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on SharpAstro.Exif:

Package Downloads
TianWen.Lib

Package Description

FC.SDK.Raw

Canon CR2 / CR3 raw-file decoder — pure managed C#, no external libraw / dcraw / EDSDK. Sibling to FC.SDK (Canon PTP device communication): one package for talking to the camera, one for decoding the files it writes.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.8.691 31 8/2/2026
3.8.681 24 7/29/2026
3.7.651 23 7/28/2026
3.6.561 103 7/27/2026
3.6.551 424 7/6/2026
3.6.531 39 7/5/2026
3.5.511 33 7/5/2026
3.4.491 115 7/5/2026
3.4.471 546 7/5/2026
3.4.451 54 7/5/2026
3.4.431 47 7/4/2026
3.4.411 80 7/4/2026
3.3.391 392 6/10/2026
3.3.361 47 6/1/2026
3.3.341 48 5/31/2026
3.2.311 105 5/30/2026
3.2.291 44 5/30/2026
3.2.271 53 5/30/2026
3.2.251 43 5/30/2026
3.1.231 57 5/30/2026
Loading failed