/// <summary> /// 高德瓦片地图为索引图,需要先转化为RGB图像,并进行二值化 /// </summary> /// <param name="path">路径(E:\\AMap20171110\\tiles\\17)</param> /// <returns></returns> public WebApiResult <string> GaodeErzhihua(GaodeErzhihuaRequest Result) { try { //高德地图瓦片相关信息获取 String FilePath = Result.FilePath;// "E:\\AMap20171110\\tiles\\17"; //String FilePath = "F:\\000"; DirectoryInfo TheFolder = new DirectoryInfo(FilePath); FileInfo[] file_list = GetFileList(TheFolder); //List<Point> TilePoints = GetTileCoor(file_list); for (int i = 0; i < file_list.Length; i++) { string level = file_list[i].DirectoryName.Substring(0, file_list[i].DirectoryName.LastIndexOf("\\")); level = level.Substring(level.LastIndexOf("\\")); String savedir = Result.FilePath + "$erzhihua" + file_list[i].DirectoryName.Substring(file_list[i].DirectoryName.LastIndexOf("\\")); if (!Directory.Exists(savedir)) { Directory.CreateDirectory(savedir); } String savepath = savedir + "\\" + file_list[i].Name.Substring(0, file_list[i].Name.LastIndexOf(".") + 1) + "jpg"; if (File.Exists(savepath)) { continue; //File.Delete(savepath); } Bitmap amtile = (Bitmap)Bitmap.FromFile(file_list[i].FullName); //如果原图片是索引像素格式之类的,则需要转换 if (IsPixelFormatIndexed(amtile.PixelFormat) || amtile.PixelFormat == PixelFormat.Format32bppArgb) { using (Bitmap bmp = new Bitmap(amtile.Width, amtile.Height, PixelFormat.Format32bppArgb)) { using (Graphics g = Graphics.FromImage(bmp)) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; g.DrawImage(amtile, 0, 0); } amtile = (Bitmap)bmp.Clone(); } } if (Result.IsRoad == true) { //二值化 for (int m = 0; m < amtile.Height; m++) { for (int n = 0; n < amtile.Width; n++) { Color color = amtile.GetPixel(m, n); Color newcolor; if (color == Color.FromArgb(252, 249, 242))//高德地图北京颜色 { newcolor = Color.FromArgb(0, 0, 0); } else { newcolor = Color.FromArgb(255, 255, 255); } amtile.SetPixel(m, n, newcolor); } } } amtile.Save(savepath, ImageFormat.Jpeg); } return(new WebApiResult <string>() { success = 1, msg = "高德瓦片二值化完成!" }); } catch (Exception ex) { return(new WebApiResult <string>() { success = 0, msg = ex.ToString() }); } }
/// <summary> /// 高德瓦片地图为索引图,需要先转化为RGB图像,并进行二值化 /// </summary> /// <param name="request"></param> /// <returns></returns> public WebApiResult <string> Any(GaodeErzhihuaRequest request) { ImageMosaicService service = new ImageMosaicService(); return(service.GaodeErzhihua(request)); }