PictureSharp.Tiff
0.7.4
dotnet add package PictureSharp.Tiff --version 0.7.4
NuGet\Install-Package PictureSharp.Tiff -Version 0.7.4
<PackageReference Include="PictureSharp.Tiff" Version="0.7.4" />
<PackageVersion Include="PictureSharp.Tiff" Version="0.7.4" />
<PackageReference Include="PictureSharp.Tiff" />
paket add PictureSharp.Tiff --version 0.7.4
#r "nuget: PictureSharp.Tiff, 0.7.4"
#:package PictureSharp.Tiff@0.7.4
#addin nuget:?package=PictureSharp.Tiff&version=0.7.4
#tool nuget:?package=PictureSharp.Tiff&version=0.7.4
PictureSharp.Tiff
TIFF and BigTIFF for PictureSharp, in pure C# with no native dependencies. Requires .NET 10+ and PictureSharp 0.9.0+.
dotnet add package PictureSharp.Tiff --version 0.7.4
Usage
Register the format once, then load and save .tif files like any other image:
using PictureSharp;
using PictureSharp.Formats.Tiff;
ImageConfiguration.Default = ImageConfiguration.Default.ToBuilder().AddFormat(new TiffFormat()).Build();
using var image = Image.Load("scan.tif");
image.Mutate(x => x.Resize(1600, 0));
image.SaveAsTiff("small.tif");
Loading reads the first page and keeps ICC, EXIF and XMP. Saving uses lossless LZW and writes each frame as a page. Other pages, JPEG compression and tiles are covered in the guides below.
Keep 16-bit samples
using Image scan = Image.Load("scan.tif", new DecoderOptions { PreserveBitDepth = true });
scan.SaveAsTiff("copy.tif", new TiffEncoderOptions { BitDepth = TiffBitDepth.Sixteen });
Default loading uses 8-bit pixels. Use PreserveBitDepth for deeper scans; processing keeps that precision.
See the 0.7.4 changes.
Support
- Read: strips and tiles; none, PackBits, LZW, Deflate, JPEG, WebP, CCITT fax, NeXT and ThunderScan; grey,
palette, RGB, CMYK, YCbCr and CIE Lab*, with or without alpha; integer samples of 1 to 16 and 32 bits (also
signed), float of 16, 32 and 64 bits; with
DecoderOptions.PreserveBitDepth, samples of more than 8 bits decode to 16-bit images (PixelType.Rgba64). - Write: 8-bit grey, RGB, palette and black and white, with or without alpha, and 16-bit grey and RGB from 16-bit images; the same compressions except NeXT and ThunderScan (CCITT Group 4 only).
- Metadata: ICC, XMP, EXIF/GPS, orientation and resolution, also edited in place.
- Not supported: old-style JPEG, JBIG, LZMA, Zstandard, ICC and ITU Lab*; writing CMYK or planar data.
Pixels match libtiff 4.5.1 and Pillow 10.2.0.
Status: ready for use and tested against libtiff and Pillow, but before 1.0 the API may still change and some real-world files may still fail; please report them with the file attached. Pure managed code with no native dependencies; CI runs on Linux, including a Native AOT build.
Guides: decoding · encoding · metadata · release notes
License
MIT. Ported sources (libtiff, Pillow conversion rules) are listed in THIRD-PARTY-NOTICES.txt.
Build
dotnet build -c Release
dotnet test -c Release
| Product | Versions 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. |
-
net10.0
- PictureSharp (>= 0.9.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
0.7.4: 16-bit images on PictureSharp 0.9.0: with DecoderOptions.PreserveBitDepth, samples of more than 8 bits decode to PixelType.Rgba64; 16-bit images are written with 16-bit grey or RGB samples (TiffEncoderOptions.BitDepth). 8-bit decoding and encoding are unchanged. Requires PictureSharp 0.9.0.