关于 Javascript 网页截图 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
harryperlau
V2EX    程序员

关于 Javascript 网页截图

  •  
  •   harryperlau 2019-04-28 20:03:10 +08:00 4915 次点击
    这是一个创建于 2432 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想请教下各位,网页能做到像 QQ 截图 那样吗?提供一个图标,点击之后触发某个事件,实现像 QQ 截图 那样的功能;如果没有,有没有其他解决方案;或者说,现在浏览器截图的最优方案是什么呢?

    12 条回复    2019-04-29 11:57:00 +08:00
    beastk
        1
    beastk  
       2019-04-28 20:07:34 +08:00 via iPhone
    貌似都是 canvas 截图,还有 firefox 自带的截图挺好用
    poisedflw
        2
    poisedflw  
       2019-04-28 20:13:41 +08:00
    html to canvas.
    santana2000
        3
    santana2000  
       2019-04-28 20:17:33 +08:00 via iPhone
    把 html2canvas 封装到一个函数里点击调用就可以
    cutpictureboyxx
        4
    cutpictureboyxx  
       2019-04-28 20:17:59 +08:00 via iPhone
    提供一个思路,前端实现一个框,把框的坐标和浏览器大小传给后台,后台用无头浏览器实现截图再传给后台,这种应该是最真的
    caomu
        5
    caomu  
       2019-04-28 20:33:34 +08:00 via Android
    @cutpictureboyxx 认证页面呢?
    plqws
        6
    plqws  
       2019-04-28 20:38:37 +08:00
    webrtc 也是一个思路
    en20
        7
    en20  
       2019-04-28 23:55:28 +08:00 via iPhone
    以前做过一个保存战绩页面,就是用 html2canvas 然后过渡动画加声音假装截图。html2canvas 会有一些问题比如图片不能跨域,布局错位。前端截图没有很好的解决方案都有这样那样的问题
    davin
        8
    davin  
       2019-04-28 23:56:40 +08:00 via iPhone
    Chrome 下 F12 打开调试工具,按下 Ctrl + Shift + P 组合键,在弹层里输入 screenshot 关键字,可以尝试区域截图、全尺寸截图、按节点截图和可视区域截图几种方式。再复杂一些的估计得借助插件了。
    vertigo
        9
    vertigo  
       2019-04-29 01:19:37 +08:00 via iPhone
    正好前几天做过截图,如果能前段截图最好使用 html2canvas 再转化成 base64 图片,可以配置图片跨域。这个方案的缺点是偶尔会有诡异的错位。另一种无头浏览器的方案,点击后后端模拟渲染。但是缺点是图片很糊而且耗费资源,建议全局使用 rem 单位,直接将 html 的 font-size 设为原本的三倍这样截大图后压缩会清晰的多
    Karpov
        10
    Karpov  
       2019-04-29 08:41:03 +08:00   1
    pageres
    流行:8k stars
    仓库地址: https://github.com/sindresorhus/pageres
    capture-website
    流行:200 stars
    仓库地址: https://github.com/sindresorhus/capture-website
    pageres 本质上是调用 capture-website
    capture-website 就是 @vertigo @cutpictureboyxx 提到的利用 puppeeter 操纵浏览器实现
    zqx
        11
    zqx  
       2019-04-29 10:07:54 +08:00 via Android
    不局限浏览器的话 node 有一堆库,都是和 qq 截图一样的功能
    mytry
        12
    mytry  
       2019-04-29 11:57:00 +08:00   1
    别说截图,录屏都可以实现。Chrome 72+ / FireFox 66+ 支持 Media Devices API,可以把屏幕数据转成数据流。

    可以在控制台里试试:navigator.mediaDevices.getDisplayMedia()

    会弹出窗口,让你选哪个窗口(或者整个屏幕)录制。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3808 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:08 PVG 13:08 LAX 21:08 JFK 00:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86