diff --git a/src/ImageSharp/Common/ByteOrder.cs b/src/ImageSharp/Common/ByteOrder.cs
index 8daa35eb35..cc38f1cdee 100644
--- a/src/ImageSharp/Common/ByteOrder.cs
+++ b/src/ImageSharp/Common/ByteOrder.cs
@@ -4,7 +4,7 @@
namespace SixLabors.ImageSharp
{
///
- /// The tiff data stream byte order enum.
+ /// The byte order of the data stream.
///
public enum ByteOrder
{
diff --git a/src/ImageSharp/Formats/Tiff/Compression/Compressors/DeflateCompressor.cs b/src/ImageSharp/Formats/Tiff/Compression/Compressors/DeflateCompressor.cs
index 46cb63a86e..f8fa2b89ca 100644
--- a/src/ImageSharp/Formats/Tiff/Compression/Compressors/DeflateCompressor.cs
+++ b/src/ImageSharp/Formats/Tiff/Compression/Compressors/DeflateCompressor.cs
@@ -31,17 +31,16 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors
public override void CompressStrip(Span rows, int height)
{
this.memoryStream.Seek(0, SeekOrigin.Begin);
- using var stream = new ZlibDeflateStream(this.Allocator, this.memoryStream, this.compressionLevel);
-
- if (this.Predictor == TiffPredictor.Horizontal)
+ using (var stream = new ZlibDeflateStream(this.Allocator, this.memoryStream, this.compressionLevel))
{
- HorizontalPredictor.ApplyHorizontalPrediction(rows, this.BytesPerRow, this.BitsPerPixel);
- }
+ if (this.Predictor == TiffPredictor.Horizontal)
+ {
+ HorizontalPredictor.ApplyHorizontalPrediction(rows, this.BytesPerRow, this.BitsPerPixel);
+ }
- stream.Write(rows);
-
- stream.Flush();
- stream.Dispose();
+ stream.Write(rows);
+ stream.Flush();
+ }
int size = (int)this.memoryStream.Position;
diff --git a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
index d18ba7dc67..6e80899e47 100644
--- a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
+++ b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
@@ -26,8 +26,6 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff
{
public const int DefaultStripSize = 8 * 1024;
- public static readonly ByteOrder ByteOrder = BitConverter.IsLittleEndian ? ByteOrder.LittleEndian : ByteOrder.BigEndian;
-
private static readonly ushort ByteOrderMarker = BitConverter.IsLittleEndian
? TiffConstants.ByteOrderLittleEndianShort
: TiffConstants.ByteOrderBigEndianShort;
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs
index ca366f5150..edeee81a1b 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffBiColorWriter.cs
@@ -12,7 +12,7 @@ using SixLabors.ImageSharp.Processing;
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
- internal class TiffBiColorWriter : TiffBaseColorWriter
+ internal sealed class TiffBiColorWriter : TiffBaseColorWriter
where TPixel : unmanaged, IPixel
{
private readonly Image imageBlackWhite;
@@ -25,7 +25,6 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
: base(image, memoryAllocator, configuration, entriesCollector)
{
// Convert image to black and white.
- // TODO: Should we allow to skip this by the user, if its known to be black and white already?
this.imageBlackWhite = new Image(configuration, new ImageMetadata(), new[] { image.Clone() });
this.imageBlackWhite.Mutate(img => img.BinaryDither(KnownDitherings.FloydSteinberg));
}
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs
index 7e2e4e304e..4da9a9b972 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffGrayWriter.cs
@@ -7,7 +7,7 @@ using SixLabors.ImageSharp.PixelFormats;
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
- internal class TiffGrayWriter : TiffCompositeColorWriter
+ internal sealed class TiffGrayWriter : TiffCompositeColorWriter
where TPixel : unmanaged, IPixel
{
public TiffGrayWriter(ImageFrame image, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs
index dc7dcf5891..d15bc5e17a 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffPaletteWriter.cs
@@ -13,7 +13,7 @@ using SixLabors.ImageSharp.Processing.Processors.Quantization;
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
- internal class TiffPaletteWriter : TiffBaseColorWriter
+ internal sealed class TiffPaletteWriter : TiffBaseColorWriter
where TPixel : unmanaged, IPixel
{
private const int ColorsPerChannel = 256;
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs
index b32b5ed90a..acb0030bb1 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffRgbWriter.cs
@@ -7,7 +7,7 @@ using SixLabors.ImageSharp.PixelFormats;
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
{
- internal class TiffRgbWriter : TiffCompositeColorWriter
+ internal sealed class TiffRgbWriter : TiffCompositeColorWriter
where TPixel : unmanaged, IPixel
{
public TiffRgbWriter(ImageFrame image, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector)
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs
index b7749e0f6f..39d46c878e 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs
@@ -61,7 +61,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers
/// Writes a byte to the current stream.
///
/// The byte to write.
- public void Write(byte value) => this.BaseStream.Write(new byte[] { value }, 0, 1);
+ public void Write(byte value) => this.BaseStream.WriteByte(value);
///
/// Writes a two-byte unsigned integer to the current stream.