Exemplo n.º 1
0
 public void AperioSingeTileRead(Tiff InputTiffFile, ref Byte[] targetBuf, PageLevel pageLevel, int xGrid, int yGrid)
 {
     if (InputTiffFile != null)
     {
         InputTiffFile.SetDirectory(pageLevel.PageIndex); // page必须为short类型
         InputTiffFile.ReadEncodedTile(xGrid + yGrid * pageLevel.Tile_XCount, targetBuf, 0, pageLevel.Tile_Width * pageLevel.Tile_Width * 3);
     }
     else
     {
         targetBuf = null;
     }
 }
Exemplo n.º 2
0
        public void AperioMultiTilesRead(Tiff InputTiffFile, out Byte[] targetBuf, PageLevel pageLevel, int xGrid, int yGrid, int xTiles, int yTiles)
        {
            Compression compression = (Compression)InputTiffFile.GetField(TiffTag.COMPRESSION)[0].ToInt();

            if (compression != Compression.JPEG | xGrid < 0 | yGrid < 0)
            {
                targetBuf = null;
                return;
            }

            if ((pageLevel.Tile_Width == pageLevel.Tile_Height) && (pageLevel.PageIndex <= 2))
            {
                InputTiffFile.SetDirectory(pageLevel.PageIndex); // page必须为short类型
                InputTiffFile.ReadMultiEncodedTile(out TargetBuf, xGrid, yGrid, xTiles, yTiles, 0, pageLevel.tile_bytesize);

                /*  以下代码已被  Tiff ReadMultiEncodedTile 替代
                 *   int width = pageLevel.Tile_Width * xTiles;
                 *   int height = pageLevel.Tile_Height * yTiles;
                 *
                 *   targetBuf = new Byte[width * height * 3];
                 *   Byte[] tileBuf = new Byte[pageLevel.tile_bytesize];
                 *
                 *   for (int y = 0; y < yTiles; y++)
                 *   {
                 *       for (int x = 0; x < xTiles; x++)
                 *       {
                 *           InputTiffFile.ReadEncodedTile((xGrid + x) + (yGrid + y) * (pageLevel.Tile_XCount), tileBuf, 0, pageLevel.tile_bytesize);
                 *           for (int xx = 0; xx < pageLevel.Tile_Height; xx++)
                 *           {
                 *               Buffer.BlockCopy(tileBuf, xx * pageLevel.Tile_Width * 3, targetBuf,
                 *                   x * pageLevel.Tile_Width * 3 + (xx + y * pageLevel.Tile_Height) * width * 3, pageLevel.Tile_Width * 3);
                 *           }
                 *       }
                 *   }
                 */

                targetBuf = TargetBuf;
            }
            else
            {
                targetBuf = null;
                return;
            }
        }