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)); }
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>(); }