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

jc4330501 2014-04-28 01:28:53

我想把地图下载下来,保存成图片,但是通过百度地图返回的全部都是html,而且里面的地图图片全部都是一张一张拼起来的,我想问问,有办法通过下载把我页面上的地图保存成一整张图片存到本地吗。
...全文
4175 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodgirlmia 2015-01-30
  • 打赏
  • 举报
回复
引用 20 楼 oniguango 的回复:
楼主我也正在做地图的保存图片的这个功能,遇到和你同样的问题,我用的是html2canvas,然后地图的部分截取不了,好像是因为地图是引用的别的地图的瓦片图T_T纠结了几天还没纠结出来,html2canvas貌似是不能把不同域的东西生成base64
我也遇到了这个问题,在客户端截取百度地图点保存上传到服务器,请问你怎么实现的呢?
goodgirlmia 2015-01-30
  • 打赏
  • 举报
回复
我也遇到了这个问题,在客户端截取百度地图点保存上传到服务器,请问楼主怎么实现,求助啊
huhu_smile 2014-08-08
  • 打赏
  • 举报
回复
楼主我也正在做地图的保存图片的这个功能,遇到和你同样的问题,我用的是html2canvas,然后地图的部分截取不了,好像是因为地图是引用的别的地图的瓦片图T_T纠结了几天还没纠结出来,html2canvas貌似是不能把不同域的东西生成base64
jc4330501 2014-05-07
  • 打赏
  • 举报
回复
引用 16 楼 u013952183 的回复:
[quote=引用 13 楼 jc4330501 的回复:] [quote=引用 11 楼 u013952183 的回复:] 我现在也是在做asp.net截图的功能,我是这么想的,先把整个屏幕截图,然后再从中截取,就像QQ截图那样。
关键第一步 整个界面截图就不好弄,用JS或者后台来将网页保存图片,但是现在还不知道用什么技术。用JS保存可以要包图片首先保存,用ajax上传到服务器,用C#的技术,暂时没发现什么对浏览器html比较好识别的方法。[/quote]

            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;
可以截全屏幕[/quote] 算了。这个问题结贴吧,这个方法虽然效果不好,但是分还是给你吧。
jc4330501 2014-05-05
  • 打赏
  • 举报
回复
引用 16 楼 u013952183 的回复:
[quote=引用 13 楼 jc4330501 的回复:] [quote=引用 11 楼 u013952183 的回复:] 我现在也是在做asp.net截图的功能,我是这么想的,先把整个屏幕截图,然后再从中截取,就像QQ截图那样。
关键第一步 整个界面截图就不好弄,用JS或者后台来将网页保存图片,但是现在还不知道用什么技术。用JS保存可以要包图片首先保存,用ajax上传到服务器,用C#的技术,暂时没发现什么对浏览器html比较好识别的方法。[/quote]

            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;
可以截全屏幕[/quote] 你这个是截取工作区域,有没有办法截取某个页面?我地图是左右框架,我只要下面那个地图组成的图片的话,有没有办法?这个截图会把url栏也截取下来,如果不能截取页面,这个地址栏能不能去掉呢?
华仔JC 2014-05-04
  • 打赏
  • 举报
回复
引用 13 楼 jc4330501 的回复:
[quote=引用 11 楼 u013952183 的回复:] 我现在也是在做asp.net截图的功能,我是这么想的,先把整个屏幕截图,然后再从中截取,就像QQ截图那样。
关键第一步 整个界面截图就不好弄,用JS或者后台来将网页保存图片,但是现在还不知道用什么技术。用JS保存可以要包图片首先保存,用ajax上传到服务器,用C#的技术,暂时没发现什么对浏览器html比较好识别的方法。[/quote]

            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;
可以截全屏幕
jc4330501 2014-05-04
  • 打赏
  • 举报
回复
引用 14 楼 jc4330501 的回复:
[quote=引用 12 楼 happytonice 的回复:] 图片能够切割,你能得到瓦片,也应能拼合
我这个地图是用JS的,得到的路径全部在前台,首先第一个瓦片地址获取来很麻烦,第二个,就算知道瓦片地址,要一个一个下,然后拼接出来速度特别慢,如果用户把界面 地图放大或者缩小,这个是出问题的。现在最好的办法不是去下载,是把浏览器显示的页面想办法截下来,是最好的办法。希望有人能推荐一个比较好用的JS截屏代码。点一下,相当于截取了图片,然后生成base64位,但是不能使用那种解析html的办法,因为百度的图片是远程的,不是本地的,解析html的那种远程图片或者背景是空的。。[/quote] 或者有没有完美使用 WebBrowser 和window API 技术,可能是我的水平不够,所以截出的图出问题。
jc4330501 2014-05-04
  • 打赏
  • 举报
回复
引用 12 楼 happytonice 的回复:
图片能够切割,你能得到瓦片,也应能拼合
我这个地图是用JS的,得到的路径全部在前台,首先第一个瓦片地址获取来很麻烦,第二个,就算知道瓦片地址,要一个一个下,然后拼接出来速度特别慢,如果用户把界面 地图放大或者缩小,这个是出问题的。现在最好的办法不是去下载,是把浏览器显示的页面想办法截下来,是最好的办法。希望有人能推荐一个比较好用的JS截屏代码。点一下,相当于截取了图片,然后生成base64位,但是不能使用那种解析html的办法,因为百度的图片是远程的,不是本地的,解析html的那种远程图片或者背景是空的。。
jc4330501 2014-05-04
  • 打赏
  • 举报
回复
引用 11 楼 u013952183 的回复:
我现在也是在做asp.net截图的功能,我是这么想的,先把整个屏幕截图,然后再从中截取,就像QQ截图那样。
关键第一步 整个界面截图就不好弄,用JS或者后台来将网页保存图片,但是现在还不知道用什么技术。用JS保存可以要包图片首先保存,用ajax上传到服务器,用C#的技术,暂时没发现什么对浏览器html比较好识别的方法。
帅得_被人砍 2014-05-04
  • 打赏
  • 举报
回复
百度地图有API接口的噢
happytonice 2014-04-30
  • 打赏
  • 举报
回复
图片能够切割,你能得到瓦片,也应能拼合
华仔JC 2014-04-30
  • 打赏
  • 举报
回复
我现在也是在做asp.net截图的功能,我是这么想的,先把整个屏幕截图,然后再从中截取,就像QQ截图那样。
  • 打赏
  • 举报
回复
楼主想要的是地图的数据包吧
jimil 2014-04-28
  • 打赏
  • 举报
回复
引用 6 楼 jc4330501 的回复:
[quote=引用 5 楼 jimil 的回复:] 哦,我算是明白你的意思了,你是打算把地图下载下来,保存到自己的项目中,可以随意修改或加载,达到离线的目的对吧?
不是的。我这个是B/S的,地图是调用百度接口的,我原来的打印那个地图,没有任何问题,但是现在客户提出要把地图下载到本地,那就出了一个问题,这个地图图片所有的都不在本地,百度地图也是一张一张的组合图片,如果使用一张一张的下载根本不现实,所有我就想有没有办法 把 这个浏览器打开的原有页面,通过截图或者类似打印那样生成图片的办法,把地图保存下来。 使用WebBrowser发现识别不高,生成的图片跟浏览器的差别很大,通过window api 百度地图为空白。[/quote] 还是不懂,你的要求用整屏截图或是qq截图不就行了?或是你想在b/s上实现截图的功能供客户端使用?
jimil 2014-04-28
  • 打赏
  • 举报
回复
OpenLayers MapXtreme 这是两种,一种基于js,一种基于java,不过你都可以参考,除非你不需要放大缩小缓冲等路径等功能,不然单单的截图是没意义的
jc4330501 2014-04-28
  • 打赏
  • 举报
回复
引用 5 楼 jimil 的回复:
哦,我算是明白你的意思了,你是打算把地图下载下来,保存到自己的项目中,可以随意修改或加载,达到离线的目的对吧?
不是的。我这个是B/S的,地图是调用百度接口的,我原来的打印那个地图,没有任何问题,但是现在客户提出要把地图下载到本地,那就出了一个问题,这个地图图片所有的都不在本地,百度地图也是一张一张的组合图片,如果使用一张一张的下载根本不现实,所有我就想有没有办法 把 这个浏览器打开的原有页面,通过截图或者类似打印那样生成图片的办法,把地图保存下来。 使用WebBrowser发现识别不高,生成的图片跟浏览器的差别很大,通过window api 百度地图为空白。
jimil 2014-04-28
  • 打赏
  • 举报
回复
哦,我算是明白你的意思了,你是打算把地图下载下来,保存到自己的项目中,可以随意修改或加载,达到离线的目的对吧?
jimil 2014-04-28
  • 打赏
  • 举报
回复
哦,没看到题目。。。。。想保存到客户端本地?你这是c/s还是b/s?
jc4330501 2014-04-28
  • 打赏
  • 举报
回复
引用 1 楼 jimil 的回复:
截图可以吗? 满足不了你的需求?
因为这个页面不是一整张图片,是通过div img组合起来,一般截图都需要使用插件,暂时还没发现什么比较好不需要安装插件来截图,如果你有好的截图方法,也可以推荐下。
jc4330501 2014-04-28
  • 打赏
  • 举报
回复
因为这个页面不是一整张图片,是通过div img组合起来,一般截图都需要使用插件,暂时还没发现什么比较好不需要安装插件来截图,如果你有好的截图方法,也可以推荐下。
加载更多回复(1)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧