Пример #1
0
        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));
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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>();
        }
Пример #4
0
        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>();
        }
Пример #5
0
 public TiffImageSharpEncoder(TiffImageEncoder <TTiffPixel> encoder)
 {
     Debug.Assert(Unsafe.SizeOf <TIntermediate>() == Unsafe.SizeOf <TTiffPixel>());
     _encoder = encoder ?? throw new ArgumentNullException(nameof(encoder));
 }