diff --git a/src/ImageSharp/Formats/Tiff/Compression/Compressors/DeflateCompressor.cs b/src/ImageSharp/Formats/Tiff/Compression/Compressors/DeflateCompressor.cs
index 64d3b1ea3..46cb63a86 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Compressors/DeflateCompressor.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Compressors/DeflateCompressor.cs
@@ -19,12 +19,15 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors
: base(output, allocator, width, bitsPerPixel, predictor)
=> this.compressionLevel = compressionLevel;
+ ///
public override TiffEncoderCompression Method => TiffEncoderCompression.Deflate;
+ ///
public override void Initialize(int rowsPerStrip)
{
}
+ ///
public override void CompressStrip(Span rows, int height)
{
this.memoryStream.Seek(0, SeekOrigin.Begin);
@@ -52,6 +55,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors
#endif
}
+ ///
protected override void Dispose(bool disposing)
{
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Compressors/LzwCompressor.cs b/src/ImageSharp/Formats/Tiff/Compression/Compressors/LzwCompressor.cs
index 84dc95b5f..d29cf6157 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Compressors/LzwCompressor.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Compressors/LzwCompressor.cs
@@ -17,10 +17,13 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors
{
}
+ ///
public override TiffEncoderCompression Method => TiffEncoderCompression.Lzw;
+ ///
public override void Initialize(int rowsPerStrip) => this.lzwEncoder = new TiffLzwEncoder(this.Allocator);
+ ///
public override void CompressStrip(Span rows, int height)
{
if (this.Predictor == TiffPredictor.Horizontal)
@@ -31,6 +34,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors
this.lzwEncoder.Encode(rows, this.Output);
}
+ ///
protected override void Dispose(bool disposing) => this.lzwEncoder?.Dispose();
}
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Compressors/NoCompressor.cs b/src/ImageSharp/Formats/Tiff/Compression/Compressors/NoCompressor.cs
index 6c6b9ef34..f4a902b46 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Compressors/NoCompressor.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Compressors/NoCompressor.cs
@@ -13,14 +13,18 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors
{
}
+ ///
public override TiffEncoderCompression Method => TiffEncoderCompression.None;
+ ///
public override void Initialize(int rowsPerStrip)
{
}
+ ///
public override void CompressStrip(Span rows, int height) => this.Output.Write(rows);
+ ///
protected override void Dispose(bool disposing)
{
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Compressors/PackBitsCompressor.cs b/src/ImageSharp/Formats/Tiff/Compression/Compressors/PackBitsCompressor.cs
index 93c37d25d..5353b17c3 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Compressors/PackBitsCompressor.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Compressors/PackBitsCompressor.cs
@@ -16,14 +16,17 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors
{
}
+ ///
public override TiffEncoderCompression Method => TiffEncoderCompression.PackBits;
+ ///
public override void Initialize(int rowsPerStrip)
{
int additionalBytes = ((this.BytesPerRow + 126) / 127) + 1;
this.pixelData = this.Allocator.AllocateManagedByteBuffer(this.BytesPerRow + additionalBytes);
}
+ ///
public override void CompressStrip(Span rows, int height)
{
DebugGuard.IsTrue(rows.Length % height == 0, "Invalid height");
@@ -38,6 +41,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors
}
}
+ ///
protected override void Dispose(bool disposing) => this.pixelData?.Dispose();
}
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/DeflateTiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/DeflateTiffCompression.cs
index a53d69027..be63bdad8 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/DeflateTiffCompression.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/DeflateTiffCompression.cs
@@ -54,6 +54,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Decompresso
}
}
+ ///
protected override void Dispose(bool disposing)
{
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/LzwTiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/LzwTiffCompression.cs
index b85aa3a22..a14738e44 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/LzwTiffCompression.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/LzwTiffCompression.cs
@@ -38,6 +38,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Decompresso
}
}
+ ///
protected override void Dispose(bool disposing)
{
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/NoneTiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/NoneTiffCompression.cs
index a30997deb..f041a00e9 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/NoneTiffCompression.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/NoneTiffCompression.cs
@@ -23,6 +23,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Decompresso
///
protected override void Decompress(BufferedReadStream stream, int byteCount, Span buffer) => _ = stream.Read(buffer, 0, Math.Min(buffer.Length, byteCount));
+ ///
protected override void Dispose(bool disposing)
{
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs
index ab67d818d..c7461a807 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/PackBitsTiffCompression.cs
@@ -88,6 +88,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Decompresso
}
}
+ ///
protected override void Dispose(bool disposing) => this.compressedDataMemory?.Dispose();
}
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T4TiffCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T4TiffCompression.cs
index fe4641fb2..275e3d598 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T4TiffCompression.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Decompressors/T4TiffCompression.cs
@@ -81,6 +81,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Decompresso
}
}
+ ///
protected override void Dispose(bool disposing)
{
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/TiffBaseCompression.cs b/src/ImageSharp/Formats/Tiff/Compression/TiffBaseCompression.cs
index e47b65c99..a403ca064 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/TiffBaseCompression.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/TiffBaseCompression.cs
@@ -17,20 +17,35 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression
this.Width = width;
this.BitsPerPixel = bitsPerPixel;
this.Predictor = predictor;
-
this.BytesPerRow = ((width * bitsPerPixel) + 7) / 8;
}
+ ///
+ /// Gets the image width.
+ ///
public int Width { get; }
+ ///
+ /// Gets the bits per pixel.
+ ///
public int BitsPerPixel { get; }
+ ///
+ /// Gets the bytes per row.
+ ///
public int BytesPerRow { get; }
+ ///
+ /// Gets the predictor to use. Should only be used with deflate or lzw compression.
+ ///
public TiffPredictor Predictor { get; }
+ ///
+ /// Gets the memory allocator.
+ ///
protected MemoryAllocator Allocator { get; }
+ ///
public void Dispose()
{
if (this.isDisposed)
diff --git a/src/ImageSharp/Formats/Tiff/Compression/TiffBaseCompressor.cs b/src/ImageSharp/Formats/Tiff/Compression/TiffBaseCompressor.cs
index 71190c7c4..6514fbe83 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/TiffBaseCompressor.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/TiffBaseCompressor.cs
@@ -10,16 +10,39 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression
{
internal abstract class TiffBaseCompressor : TiffBaseCompression
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The output stream to write the compressed image to.
+ /// The memory allocator.
+ /// The image width.
+ /// Bits per pixel.
+ /// The predictor to use (should only be used with deflate or lzw compression). Defaults to none.
protected TiffBaseCompressor(Stream output, MemoryAllocator allocator, int width, int bitsPerPixel, TiffPredictor predictor = TiffPredictor.None)
: base(allocator, width, bitsPerPixel, predictor)
=> this.Output = output;
+ ///
+ /// Gets the compression method to use.
+ ///
public abstract TiffEncoderCompression Method { get; }
+ ///
+ /// Gets the output stream to write the compressed image to.
+ ///
public Stream Output { get; }
+ ///
+ /// Does any initialization required for the compression.
+ ///
+ /// The number of rows per strip.
public abstract void Initialize(int rowsPerStrip);
+ ///
+ /// Compresses a strip of the image.
+ ///
+ /// Image rows to compress.
+ /// Image height.
public abstract void CompressStrip(Span rows, int height);
}
}
diff --git a/src/ImageSharp/Formats/Tiff/Compression/TiffCompressorFactory.cs b/src/ImageSharp/Formats/Tiff/Compression/TiffCompressorFactory.cs
index c954de215..eeb14fb74 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/TiffCompressorFactory.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/TiffCompressorFactory.cs
@@ -1,11 +1,8 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
-using System;
-using System.Buffers;
using System.IO;
using SixLabors.ImageSharp.Compression.Zlib;
-using SixLabors.ImageSharp.Formats.Experimental.Tiff;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Constants;
using SixLabors.ImageSharp.Memory;
@@ -26,31 +23,31 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression
switch (method)
{
case TiffEncoderCompression.None:
- DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "Values must be equals");
- DebugGuard.IsTrue(predictor == TiffPredictor.None, "Values must be equals");
+ DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set");
+ DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression");
return new NoCompressor(output);
case TiffEncoderCompression.PackBits:
- DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "Values must be equals");
- DebugGuard.IsTrue(predictor == TiffPredictor.None, "Values must be equals");
+ DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set");
+ DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression");
return new PackBitsCompressor(output, allocator, width, bitsPerPixel);
case TiffEncoderCompression.Deflate:
return new DeflateCompressor(output, allocator, width, bitsPerPixel, predictor, compressionLevel);
case TiffEncoderCompression.Lzw:
- DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "Values must be equals");
+ DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set");
return new LzwCompressor(output, allocator, width, bitsPerPixel, predictor);
case TiffEncoderCompression.CcittGroup3Fax:
- DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "Values must be equals");
- DebugGuard.IsTrue(predictor == TiffPredictor.None, "Values must be equals");
+ DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set");
+ DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression");
return new T4BitCompressor(output, allocator, width, bitsPerPixel, false);
case TiffEncoderCompression.ModifiedHuffman:
- DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "Values must be equals");
- DebugGuard.IsTrue(predictor == TiffPredictor.None, "Values must be equals");
+ DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set");
+ DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression");
return new T4BitCompressor(output, allocator, width, bitsPerPixel, true);
default:
diff --git a/src/ImageSharp/Formats/Tiff/Compression/TiffDecompressorsFactory.cs b/src/ImageSharp/Formats/Tiff/Compression/TiffDecompressorsFactory.cs
index 50e77f4f1..130205b5b 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/TiffDecompressorsFactory.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/TiffDecompressorsFactory.cs
@@ -21,29 +21,29 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression
switch (method)
{
case TiffDecoderCompressionType.None:
- DebugGuard.IsTrue(predictor == TiffPredictor.None, "Values must be equals");
- DebugGuard.IsTrue(faxOptions == FaxCompressionOptions.None, "Values must be equals");
+ DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression");
+ DebugGuard.IsTrue(faxOptions == FaxCompressionOptions.None, "No fax compression options are expected");
return new NoneTiffCompression();
case TiffDecoderCompressionType.PackBits:
- DebugGuard.IsTrue(predictor == TiffPredictor.None, "Values must be equals");
- DebugGuard.IsTrue(faxOptions == FaxCompressionOptions.None, "Values must be equals");
+ DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression");
+ DebugGuard.IsTrue(faxOptions == FaxCompressionOptions.None, "No fax compression options are expected");
return new PackBitsTiffCompression(allocator);
case TiffDecoderCompressionType.Deflate:
- DebugGuard.IsTrue(faxOptions == FaxCompressionOptions.None, "Values must be equals");
+ DebugGuard.IsTrue(faxOptions == FaxCompressionOptions.None, "No fax compression options are expected");
return new DeflateTiffCompression(allocator, width, bitsPerPixel, predictor);
case TiffDecoderCompressionType.Lzw:
- DebugGuard.IsTrue(faxOptions == FaxCompressionOptions.None, "Values must be equals");
+ DebugGuard.IsTrue(faxOptions == FaxCompressionOptions.None, "No fax compression options are expected");
return new LzwTiffCompression(allocator, width, bitsPerPixel, predictor);
case TiffDecoderCompressionType.T4:
- DebugGuard.IsTrue(predictor == TiffPredictor.None, "Values must be equals");
+ DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression");
return new T4TiffCompression(allocator, faxOptions, photometricInterpretation, width);
case TiffDecoderCompressionType.HuffmanRle:
- DebugGuard.IsTrue(predictor == TiffPredictor.None, "Values must be equals");
+ DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression");
return new ModifiedHuffmanTiffCompression(allocator, photometricInterpretation, width);
default:
diff --git a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
index ec9c761aa..d9997a28d 100644
--- a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
+++ b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
@@ -12,7 +12,6 @@ using SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Constants;
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers;
using SixLabors.ImageSharp.Memory;
-using SixLabors.ImageSharp.Metadata;
using SixLabors.ImageSharp.Metadata.Profiles.Exif;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
@@ -58,6 +57,9 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff
///
private readonly DeflateCompressionLevel compressionLevel;
+ ///
+ /// The maximum number of bytes for a strip.
+ ///
private readonly int maxStripBytes;
///
@@ -252,7 +254,8 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff
this.bitsPerPixel = TiffBitsPerPixel.Pixel1;
return;
}
- else if (this.Mode != TiffEncodingMode.BiColor)
+
+ if (this.Mode != TiffEncodingMode.BiColor)
{
TiffThrowHelper.ThrowImageFormatException($"The {this.CompressionType} compression and {this.Mode} aren't compatible. Please use {this.CompressionType} only with {TiffEncodingMode.BiColor} or {TiffEncodingMode.Default} mode.");
}
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffBaseColorWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffBaseColorWriter.cs
index 7d5d64f16..f61b29436 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffBaseColorWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffBaseColorWriter.cs
@@ -63,6 +63,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
this.AddStripTags(rowsPerStrip, stripOffsets, stripByteCounts);
}
+ ///
public void Dispose()
{
if (this.isDisposed)
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs
index 91cc9ddfc..ca366f515 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs
@@ -49,7 +49,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
if (compressor.Method == TiffEncoderCompression.CcittGroup3Fax || compressor.Method == TiffEncoderCompression.ModifiedHuffman)
{
- // special case for T4BitCompressor
+ // Special case for T4BitCompressor.
compressor.CompressStrip(pixelAsGraySpan, height);
}
else
@@ -63,7 +63,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
Span rows = this.bitStrip.Slice(0, bytesPerStrip);
rows.Clear();
- int xx = 0;
+ int grayPixelIndex = 0;
for (int s = 0; s < height; s++)
{
int bitIndex = 0;
@@ -72,7 +72,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
for (int x = 0; x < this.Image.Width; x++)
{
int shift = 7 - bitIndex;
- if (pixelAsGraySpan[xx++] == 255)
+ if (pixelAsGraySpan[grayPixelIndex++] == 255)
{
outputRow[byteIndex] |= (byte)(1 << shift);
}
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffCompositeColorWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffCompositeColorWriter.cs
index 1b2bd4ab6..018ac6fa0 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffCompositeColorWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffCompositeColorWriter.cs
@@ -16,7 +16,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
private IManagedByteBuffer rowBuffer;
- public TiffCompositeColorWriter(ImageFrame image, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
+ protected TiffCompositeColorWriter(ImageFrame image, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
: base(image, memoryAllocator, configuration, entriesCollector)
{
}
@@ -40,6 +40,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
protected abstract void EncodePixels(Span pixels, Span buffer);
+ ///
protected override void Dispose(bool disposing) => this.rowBuffer?.Dispose();
}
}
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs
index f2b06d872..7e2e4e304 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.IO;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
@@ -16,8 +15,10 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
}
+ ///
public override int BitsPerPixel => 8;
+ ///
protected override void EncodePixels(Span pixels, Span buffer) => PixelOperations.Instance.ToL8Bytes(this.Configuration, pixels, buffer, pixels.Length);
}
}
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs
index 286663706..dc7dcf589 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs
@@ -31,14 +31,17 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
this.AddTag(this.quantized);
}
+ ///
public override int BitsPerPixel => 8;
+ ///
protected override void EncodeStrip(int y, int height, TiffBaseCompressor compressor)
{
Span pixels = GetStripPixels(((IPixelSource)this.quantized).PixelBuffer, y, height);
compressor.CompressStrip(pixels, height);
}
+ ///
protected override void Dispose(bool disposing) => this.quantized?.Dispose();
private void AddTag(IndexedImageFrame quantized)
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs
index 174a67727..b32b5ed90 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.IO;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
@@ -16,8 +15,10 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
}
+ ///
public override int BitsPerPixel => 24;
+ ///
protected override void EncodePixels(Span pixels, Span buffer) => PixelOperations.Instance.ToRgb24Bytes(this.Configuration, pixels, buffer, pixels.Length);
}
}