private Task EncodeImageAsync <TPixel>(ImageFrame <TPixel> image, TiffImageFileDirectoryWriter ifdWriter, CancellationToken cancellationToken) where TPixel : unmanaged, IPixel <TPixel> { ITiffEncoderOptions options = _options; var builder = new TiffImageEncoderBuilder(); builder.MemoryPool = _memoryPool; builder.PhotometricInterpretation = options.PhotometricInterpretation; builder.Compression = options.Compression; builder.IsTiled = options.IsTiled; builder.RowsPerStrip = options.RowsPerStrip; builder.TileSize = new TiffSize(options.TileSize.Width, options.TileSize.Height); builder.Predictor = options.Predictor; builder.EnableTransparencyForRgb = options.EnableTransparencyForRgb; builder.Orientation = options.Orientation; builder.DeflateCompressionLevel = options.DeflateCompressionLevel; builder.JpegOptions = new TiffJpegEncodingOptions { Quality = options.JpegQuality, OptimizeCoding = options.JpegOptimizeCoding }; builder.HorizontalChromaSubSampling = options.HorizontalChromaSubSampling; builder.VerticalChromaSubSampling = options.VerticalChromaSubSampling; TiffImageEncoder <TPixel> encoder = builder.BuildForImageSharp <TPixel>(); return(encoder.EncodeAsync(ifdWriter, image, cancellationToken)); }
private static async Task GenerateImageAsync(Stream stream, TiffImageEncoderBuilder builder, TiffPixelBuffer <TiffGray8> image) { using (TiffFileWriter writer = await TiffFileWriter.OpenAsync(stream, true)) { TiffStreamOffset ifdOffset; using (TiffImageFileDirectoryWriter ifdWriter = writer.CreateImageFileDirectory()) { TiffImageEncoder <TiffGray8> encoder = builder.Build <TiffGray8>(); await encoder.EncodeAsync(ifdWriter, image); ifdOffset = await ifdWriter.FlushAsync(); } writer.SetFirstImageFileDirectoryOffset(ifdOffset); await writer.FlushAsync(); } }
public DeepZoomRipper(DeepZoomRipperOptions options, HttpClientInitializationOptions httpClientInitializationOptions, string outputFile) { _options = options = options ?? DeepZoomRipperOptions.Default; if (httpClientInitializationOptions == HttpClientInitializationOptions.InitializeWithCookieContainer) { _cookieContainer = new CookieContainer(); HttpClientHandler handler = new HttpClientHandler { CookieContainer = _cookieContainer }; _http = new HttpClient(handler) { Timeout = Timeout.InfiniteTimeSpan }; } else if (httpClientInitializationOptions == HttpClientInitializationOptions.InitializeWithoutCookieContainer) { _http = new HttpClient() { Timeout = Timeout.InfiniteTimeSpan }; } _outputFile = outputFile; _configuration = Configuration.Default.Clone(); _configuration.MaxDegreeOfParallelism = 1; var builder = new TiffImageEncoderBuilder(); builder.PhotometricInterpretation = TiffPhotometricInterpretation.YCbCr; builder.IsTiled = true; builder.TileSize = new TiffSize(OutputTileSize, OutputTileSize); builder.HorizontalChromaSubSampling = 2; builder.VerticalChromaSubSampling = 2; builder.Compression = TiffCompression.Jpeg; builder.JpegOptions = new TiffJpegEncodingOptions { OptimizeCoding = true }; _encoder = builder.BuildForImageSharp <Rgb24>(); }
public void Setup() { TiffGray8[] image = new TiffGray8[8192 * 8192]; _image = TiffPixelBuffer.WrapReadOnly(image, 8192, 8192); var builder = new TiffImageEncoderBuilder(); builder.PhotometricInterpretation = TiffPhotometricInterpretation.WhiteIsZero; builder.Compression = Compression; builder.MaxDegreeOfParallelism = DegreeOfParallelism; // Strip encoder builder.IsTiled = false; builder.RowsPerStrip = 256; _stripEncoder = builder.Build <TiffGray8>(); // Tile encoder builder.IsTiled = false; builder.TileSize = new TiffSize(512, 512); _tileEncoder = builder.Build <TiffGray8>(); }
public TiffImageSharpEncoder(TiffImageEncoder <TTiffPixel> encoder) { Debug.Assert(Unsafe.SizeOf <TIntermediate>() == Unsafe.SizeOf <TTiffPixel>()); _encoder = encoder ?? throw new ArgumentNullException(nameof(encoder)); }