问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

js中怎么调用windows的截屏工具

发布网友 发布时间:2022-04-22 15:36

我来回答

2个回答

懂视网 时间:2022-05-15 22:24

我觉得使用JS截图的想法是非常荒谬的,首先JS没有权限调用操作系统的截图功能,其次,浏览器(BOM)也没有提供相关的截图接口,经过一番折腾,有点思路了,下面通过实例代码给大家简单介绍下js 截屏功能的实现代码,一起看看吧

最近参与了网易炉石盒子的相关页面开发,在做卡组分享页(地址:炉石盒子卡组分享),有个需求:用户可以把这个卡组以图片的形式分享给好友。最初的的做法是使用服务器把该页面转换成图片,然后把图片地址返回给前端。嗯,这样也挺好的啊,而且服务器还可以对转换出来的图片进行缓存,下次请求可以直接返回图片地址了。原理上是毫无毛病的。然而,问题来了,后台转换的图片和页面内容偶尔不一致,有时候会少了一一些内容,PM姐姐就很不爽了,说这个问题一定要解决。反正页面转成图片的接口是后台做的,关我luan事啊!就在暗暗自喜的时候,悲催的事情发生的,后台的同事说,因为页面里面有些内容是异步加载出来的(比如底部的二维码是通过canvas生成的),服务器转换不稳定,有时候对异步渲染的内容无法截取。说白了,就是这问题他没有办法解决,前端去改吧,谁叫前端用了异步渲染呢?最后Leader让我尝试能不能直接用JS进行截图了,这样既可以减轻服务器的压力,又可以解决上面bug。

  一开始,我觉得使用JS截图的想法是非常荒谬的(怪我无知咯,前端这几年发展的实在太快了):首先JS没有权限调用操作系统的截图功能,其次,浏览器(BOM)也没有提供相关的截图接口。我该怎么办呢、怎么办呢?有事找Google啊。然后搜索了一下: JS html to png ,然后来到就找到了这里:render-html-to-an-image。开始有思路了,回答中有人提到可以把dom转成canvas,嗯!又是Canvas!我不由得兴奋起来,真的是山重水复疑无路,柳暗花明又一村啊!然后再搜索一下 dom to canvas,来到了大家熟知的mdn的文档Drawing_DOM_objects_into_a_canvas。然后就开始认(zhuang)真(bi)的看文档。文档开头就说到,不可以把dom转成canvas,但是可以把dom转成svg,然后再把svg画到canvas里面去。也许有人会问,为什么要先把dom转成svg呢?这可能是因为svg使用xml表示、结构和dom一致吧。
下面就是官方文档的step by step的教程:

1.Blob的媒体类型必须是"image/svg+xml"

2.需要一个 svg 元素

3.在 svg 元素里面插入一个 foreignObject 元素

4.在 foreignObject 元素里面放入符合规范的 html

把dom转成canvas就这么简单,就上面几个步骤。下面是文档给出的一上简单的demo:


,运行一下,哇,帅呆了,浏览器上出现了超酷的两行艺术字呢!

嗯,原来dom转成canvas这么简单啊?那我通过 document.body.innerHTML 把body里面的所有dom取出来,然后放到 foreignObject 元素里面,不就OK了、把整个页面都截取下来了吗?

demo仅仅是个Hello World,但是实际项目中的Dom结构比这个复杂多了,比如,引入了外部样式表、图片、而且还可能某些标签不符合xml规范(如缺少闭合标签等)。下面的举个简单的例子,.container不是使用行内样式的,而是在style标签里面定义,字体红色,转成图片后,样式不生效。


既然外部样式不生效,那我们可以通过JS遍历所有的dom元素,把全部的样式通过element.style对象添加到行内样式啊。这个思路听起来不错,但是,实现这个把外部样式转成行内样式的函数我还真写不出来啊。需求比较紧,也没有那 多时间去瞎折腾了,所以,就想找找有没有现成的库。于是又去google一下。很幸运, 一下子就搜到了一个叫做html2canvas的库,非常棒的一个库,很强大、但用法非常简单.就这么简单的方法,就可以把我的整个页面截图下来了:


目前还有一个问题,就是这种方法默认是把整个页面截取下来的(就是说,会以你的innerHeight和innerWidth为边界,会存在大量的空白),可是,我的卡组只是占了页面的一小部分,我只想要卡组的部分啊。其实已经有了canvas就好办了,我们可以对它进行处理啊。大概思路是:1.把上面得到的canvas对象转成Blob并放到一个img元素。然后再把img.src绘制到canvas里面。这时候调用canvas.drawImage方法就可以截取我们想要的内容了。下面的两个函数分别是把canvas转成image以及反过来把image转成canvas。


然后,再把我们上面的写的 convertHtml2Canvas 改成下面的:


这时候就可以把它的页面的某部分内容进行截取下来了。效果如卡组分享测试页面。页面左边部分是DOM结构的,右边部分是则是使用html2canvas转换出来的图片。长得一模一样,毫无毛病哈。

关于JS页面截图的就写到这里啦,因为也只刚刚接触,很多东西也理解得不到位,欢迎各大神指点。后面会深入学习一下html2canvas的源码,进一步理解dom to canvas的原理。

热心网友 时间:2022-05-15 19:32

一.工具

windows自带的画图软件:mspaint.exe

windows自带的截图软件:SnippingTool.exe

二,方法(一):

使用快捷键PrtSc、Alt+PrtSc

1.敲击键盘上的”PrtSc“键可以实现截取全屏的功能,截取的屏幕图片将被保存到剪贴板中。可以在word文档、QQ等窗口通过"Ctrl+v"将其粘贴出来使用。

.2当只要截取窗口时,只需要按键盘上的Alt+PrtSc键,系统自动会截取当前最前面的窗口到剪贴板中,也可以在word文档、QQ等窗口通过"Ctrl+v"将其粘贴出来。

3.如果要将截取的屏幕和窗口单独作为一个图片文件保存,可以粘贴到word文档后对图片点击右键,选择“另存为图片”后保存到桌面即可。4.另外一个将截屏保存为图片文件的方法是使用windows自带的画图软件。打开软件后点击”粘贴“,截屏就从剪贴板粘贴到画图软件中。刚被粘贴上去的图片边缘有一圈蚂蚁线,代表图片此时被选中,点击裁剪后图片周围的白色背景就被去掉了,此时将图片保存到自己指定的路径即可。

方法(二):

使用windows自带的截图工具,完整的win7系统有自己自带的截图软件SnippingTool.exe,软件小巧且功能强大。可以从”C:\Windows\System32“将之找出来,将快捷方式发送到桌面方便以后使用。部分ghost系统有可能将这个软件精简掉了,对此可以在网上下载一个来使用。打开软件后,点击”新建“拖动鼠标选择要截图的区域,截图成功后保存即可。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
用六个成语各造一段话 关于把握机会的名言名句 关于把握住机会的名言名句(把握机会,成就未来) 关于把握机会的名言名句(把握机会的励志句子) 关于机会的名言名句篇一 包括“机遇”的名言名句(一) BPM中国普及之路还有多远? 哪个公司可以做OA系统 目前业内有很多人认为OA现在某些应用或者说功能在向BPM领域延生,请问... ting的三个声调组词 下载快手做电商有什么方法吗? 空调清洁剂用后会对空调有什么不好的影响吗? javascript如何截屏 快手下载如何做电商呢? 怎么用JS脚本使多张图片滚动? 如何通过JS实现图片循环滚动? 电脑开机时点了f11 现在我该点什么…急求,刚刚电脑卡死现在开不了机该怎么做 什么软件和网站可以看美剧,没有中文字幕的? IPAD 迅雷播放器 如何导入字幕 爱字幕苹果手机下载不了了 ios版qq影音怎么添加字幕 学院默示录在哪里看? 带英文字幕的视频网站有哪些? 推荐个字幕网站 字幕下载网站 iphone百度云看视频怎么调字幕 ios版本离线视频和字幕都下载了但是打开视频还是没有字幕啊怎么办 字幕网app改成什么了 北京保监局电话_百度问一问 快手开店必备的工具或者软件有哪些? js实现图片滚动效果 请教js如何实现截屏功能 js图片无缝滚动的原理是什么 什么是快手电商? js图片滚动问题。无缝滚动图片做到一半,无法写下去了。4张图片,滚动时却只显示了3张。求指导下。。 如何使用如何使用iScroll5实现移动滚动效果 下载快手如何做电商呢? 快手电商是怎么回事? 求 JS 大神,教教我图片轮播、、好心求解 快手电商怎么让代发打单 求救啊,用js实现图片左右滚动,鼠标经过图像会在滚动图像下方的固定位置显示放大图像,速度啊!!!!! js图片滚动 多组图片滚动 如何实现 快手电商2019还能做吗?快手电商2019玩法 如何用JS实现在表格内横向滚动图片 js如何控制整个页面滚动条的位置 excel批量替换行不同的字数,怎么做呢? 冰箱肉坏了 臭味怎么除 肉腐烂在冰箱怎么除臭 肉坏冰箱了怎么去除冰箱异味