日期:2014-05-16  浏览次数:20593 次

将浏览器显示的地图保存成图片存放到本地(100分)

我想把地图下载下来,保存成图片,但是通过百度地图返回的全部都是html,而且里面的地图图片全部都是一张一张拼起来的,我想问问,有办法通过下载把我页面上的地图保存成一整张图片存到本地吗。
------解决方案--------------------
引用:
Quote: 引用:

哦,我算是明白你的意思了,你是打算把地图下载下来,保存到自己的项目中,可以随意修改或加载,达到离线的目的对吧?

不是的。我这个是B/S的,地图是调用百度接口的,我原来的打印那个地图,没有任何问题,但是现在客户提出要把地图下载到本地,那就出了一个问题,这个地图图片所有的都不在本地,百度地图也是一张一张的组合图片,如果使用一张一张的下载根本不现实,所有我就想有没有办法 把 这个浏览器打开的原有页面,通过截图或者类似打印那样生成图片的办法,把地图保存下来。 使用WebBrowser发现识别不高,生成的图片跟浏览器的差别很大,通过window api 百度地图为空白。


还是不懂,你的要求用整屏截图或是qq截图不就行了?或是你想在b/s上实现截图的功能供客户端使用?
------解决方案--------------------
引用:
Quote: 引用:

我现在也是在做asp.net截图的功能,我是这么想的,先把整个屏幕截图,然后再从中截取,就像QQ截图那样。

关键第一步 整个界面截图就不好弄,用JS或者后台来将网页保存图片,但是现在还不知道用什么技术。用JS保存可以要包图片首先保存,用ajax上传到服务器,用C#的技术,暂时没发现什么对浏览器html比较好识别的方法。



            Rectangle R = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
            System.Drawing.Image img = new Bitmap(R.Width, R.Height);
            Graphics G = Graphics.FromImage(img);
            G.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(R.Width, R.Height));
            IntPtr dc = G.GetHdc();
            G.ReleaseHdc(dc);
            G.Dispose();
            img.Save("d:\\a.jpg");

这代码可以截工作窗口,
改成

Rectangle R = System.Windows.Forms.Screen.PrimaryScreen.Bounds;

可以截全屏幕