protected override object GetTileLayers(int tileLevel, int tilePositionX, int tilePositionY) { if (tileLevel > 8) { DateTime start = DateTime.Now; byte[] imgDat = TransDatManager.GetSingleTileImageFromDat(this.datFullPath, tileLevel - 8, tilePositionX, tilePositionY); if (imgDat != null) { Bitmap b = TransHelper.SetByteToImage(imgDat); Bitmap bmp = new Bitmap(b.Width, b.Height); Graphics g = Graphics.FromImage(bmp); g.DrawImage(b, 0, 0, b.Width, b.Height); using (MemoryStream ms = new MemoryStream()) { bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); DateTime end = DateTime.Now; Console.WriteLine($"tileLevel={tileLevel}, tilePositionX={tilePositionX}, tilePositionY={tilePositionY}, time={(end - start).TotalMilliseconds}"); return(new MemoryStream(ms.ToArray())); } } } return(null); }