public void Start(int tilesize) { Console.WriteLine("Compression Size Test For Specific Raster"); // this is set up for erdas imagine with a spillfile. FileInfo f = new FileInfo(filename); FileInfo f2 = new FileInfo(filename.Substring(0, filename.Length - 4) + ".ige"); Console.WriteLine("Present Filename: " + filename); Console.WriteLine("Size: " + ((f.Length + f2.Length) / 1024 / 1024).ToString() + " Mb"); GDALRead r = new GDALRead(filename); r.OpenFile(); report = new Dictionary <double, TimePieces>(); var total = Selections.Select(o => o.Value.Count).Sum(); Console.WriteLine("Running tests for {0} selections", total); Console.WriteLine("Encoding for tile size: {0}", tilesize); int counted = 0; foreach (var sel in Selections) { Console.WriteLine("On Panel Start: {0}", sel.Key); TimePieces summary = new TimePieces(); foreach (var l in sel.Value) { counted++; Console.CursorLeft = 0; Console.Write(" "); Console.CursorLeft = 0; Console.Write("On sample #{0} of {1}", counted, total); var test = r.GetTileTest(l.x, l.y, tilesize); summary.Pieces.Add(test); summary.OfMeasures++; summary.PngSize += test.PngSize; summary.TiffSize += test.TiffSize; summary.PngTime = summary.PngTime + test.PngTime; summary.TiffTime = summary.TiffTime + test.TiffTime; summary.CopyTime = summary.CopyTime + test.CopyTime; } report.Add(sel.Key, summary); Console.WriteLine(); } Console.WriteLine("Calulated Sizes."); }
/// <summary> /// This function performs data tracking on one tile at a specific tile size and location for the compression test /// Also taking into mind processing time for each major step. /// </summary> /// <param name="tilex"></param> /// <param name="tiley"></param> /// <param name="tilesize"></param> /// <returns></returns> public TimePieces GetTileTest(int tilex, int tiley, int tilesize) { TimePieces t = new TimePieces(); int tilewidth = (tilex + 1) * tilesize > RasterImg.RasterXSize ? remainderX(tilesize) : tilesize; int tileheight = (tiley + 1) * tilesize > RasterImg.RasterYSize ? remaindery(tilesize) : tilesize; DateTime start = DateTime.Now; int startx = tilex * tilesize; int starty = tiley * tilesize; Bitmap b = CopyToBitmap(1, tilewidth, tileheight, startx, starty, tilewidth, tileheight); DateTime end = DateTime.Now; t.CopyTime = end - start; start = DateTime.Now; MemoryStream ms = new MemoryStream(); b.Save(ms, ImageFormat.Png); end = DateTime.Now; t.PngTime = end - start; t.PngSize = ms.Length; start = DateTime.Now; ms = new MemoryStream(); // var codec = ImageCodecInfo.GetImageEncoders().Where(o => o.FormatID.Equals(ImageFormat.Tiff)).First(); b.Save(ms, ImageFormat.Tiff); end = DateTime.Now; t.TiffSize = ms.Length; t.TiffTime = end - start; return(t); }