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.