コード例 #1
0
 public DisplayViewModel(string name, string dziUrl, double mpp, DeepZoomGenerator generator)
 {
     Name              = name;
     SlideDziUrl       = dziUrl;
     SlideMpp          = mpp;
     DeepZoomGenerator = generator;
 }
コード例 #2
0
        public static void Run(FileInfo input, FileInfo output, int tileSize, int overlap)
        {
            var dziFile      = new FileInfo(output.FullName + ".dzi");
            var dziDirectory = new DirectoryInfo(output.FullName + "_files");

            if (dziFile.Exists)
            {
                Console.WriteLine($"Error: File {dziFile.FullName} already exists.");
                return;
            }
            if (dziDirectory.Exists)
            {
                Console.WriteLine($"Error: Directory {dziDirectory} already exists.");
                return;
            }

            if (tileSize <= 0)
            {
                Console.WriteLine("Error: Tile size is invalid.");
                return;
            }
            if (overlap < 0)
            {
                Console.WriteLine("Error: Overlap is invalid.");
                return;
            }

            dziDirectory.Create();

            using var image = OpenSlideImage.Open(input.FullName);
            var dz = new DeepZoomGenerator(image, tileSize, overlap);

            Console.WriteLine("Writing: " + dziFile.FullName);
            File.WriteAllText(dziFile.FullName, dz.GetDzi("jpg"));

            int currentCount    = 0;
            int totalCount      = dz.TileCount;
            var levelDimensions = dz.LevelDimensions.ToArray();

            for (int level = dz.LevelCount - 1; level >= 0; level--)
            {
                DirectoryInfo levelDirectory = dziDirectory.CreateSubdirectory(level.ToString(CultureInfo.InvariantCulture));

                long width    = levelDimensions[level].Width;
                long height   = levelDimensions[level].Height;
                int  colCount = (int)((width + tileSize - 1) / tileSize);
                int  rowCount = (int)((height + tileSize - 1) / tileSize);

                for (int row = 0; row < rowCount; row++)
                {
                    for (int col = 0; col < colCount; col++)
                    {
                        string path = Path.Combine(levelDirectory.FullName, $"{col}_{row}.jpg");
                        Console.WriteLine("Writing: " + path + $" [{++currentCount}/{totalCount}]");
                        using var fs = new FileStream(path, FileMode.Create, FileAccess.Write);
                        dz.GetTileAsJpegToStream(level, col, row, fs);
                    }
                }
            }
        }
コード例 #3
0
 public DisplayViewModel(string name, string dziUrl, double mpp, AbstractSlide osr)
 {
     Name              = name;
     SlideDziUrl       = dziUrl;
     SlideMpp          = mpp;
     DeepZoomGenerator = new DeepZoomGenerator(osr);
 }
コード例 #4
0
        public ImageProvider(IOptions <ImageOption> options)
        {
            var path = options.Value.Path;

            _image     = OpenSlideImage.Open(path);
            _generator = new DeepZoomGenerator(_image, tileSize: 254, overlap: 1);
        }
コード例 #5
0
        public void TestMetadata()
        {
            string currentDir = Directory.GetCurrentDirectory();

            using (var osr = OpenSlideImage.Open(Path.Combine(currentDir, "Assets", "boxes.tiff")))
            {
                var dz = new DeepZoomGenerator(osr, 254, 1);
                Assert.Equal(10, dz.LevelCount);
                Assert.Equal(11, dz.TileCount);
                Assert.Equal(new(int, int)[] { (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (2, 1) }, dz.LevelTiles);
コード例 #6
0
        public DeepZoomTiler(string fileName, string outDirectory = "out", string format = "jpeg", int quality = 75, int tileSize = 254, int overlap = 1, bool limitBounds = true)
        {
            this.fileName            = fileName;
            fileNameWithoutExtension = FileName.GetFileNameWithoutExtension(fileName);
            this.outDirectory        = outDirectory;

            this.format  = format;
            this.quality = quality;

            this.tileSize    = tileSize;
            this.overlap     = overlap;
            this.limitBounds = limitBounds;

            osr                 = new OpenSlide(fileName);
            dz                  = new DeepZoomGenerator(osr, tileSize, overlap, limitBounds);
            pathBuilder         = new StringBuilder();
            processedTilesCount = 0;
        }
コード例 #7
0
 public void SetUp()
 {
     osr = new ImageSlide("tests/boxes.png");
     dz  = new DeepZoomGenerator(osr);
 }
コード例 #8
0
 public void SetUp()
 {
     osr = new OpenSlide("tests/boxes.tiff");
     dz  = new DeepZoomGenerator(osr);
 }