mirror of https://github.com/SixLabors/ImageSharp
7 changed files with 66 additions and 5 deletions
@ -0,0 +1,49 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System; |
|||
using System.IO; |
|||
using SixLabors.ImageSharp.Formats.Jpeg; |
|||
using SixLabors.ImageSharp.Formats.Tiff.Constants; |
|||
using SixLabors.ImageSharp.Memory; |
|||
using SixLabors.ImageSharp.PixelFormats; |
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Tiff.Compression.Compressors |
|||
{ |
|||
internal class TiffJpegCompressor : TiffBaseCompressor |
|||
{ |
|||
public TiffJpegCompressor(Stream output, MemoryAllocator memoryAllocator, int width, int bitsPerPixel, TiffPredictor predictor = TiffPredictor.None) |
|||
: base(output, memoryAllocator, width, bitsPerPixel, predictor) |
|||
{ |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override TiffCompression Method => TiffCompression.Jpeg; |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void Initialize(int rowsPerStrip) |
|||
{ |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void CompressStrip(Span<byte> rows, int height) |
|||
{ |
|||
int pixelCount = rows.Length / 3; |
|||
int width = pixelCount / height; |
|||
|
|||
using var memoryStream = new MemoryStream(); |
|||
var image = Image.LoadPixelData<Rgb24>(rows, width, height); |
|||
image.Save(memoryStream, new JpegEncoder() |
|||
{ |
|||
Subsample = JpegSubsample.Rgb |
|||
}); |
|||
memoryStream.Position = 0; |
|||
memoryStream.WriteTo(this.Output); |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
protected override void Dispose(bool disposing) |
|||
{ |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue