网页自由截图

image.png

在反馈组件中,需要一个网页自由截图功能。
现成的轮子,没有找到合适的。可能因为自由截图的需求比较少。
想到了比较常用的html2canvas:

take "screenshots" of webpages or parts of it, directly on the users browser.

使用html2canvas,只要搞定用户需要的是哪个部分,就可以完成自由截图了。

最终的目的是拿到截取图片的宽高和xy偏移量。

思路:通过监听mousedown mousemove mouseup事件,记录起始点坐标。
细节 1. mousemove需要防抖处理。
2. 需要考虑结束点在起始点上下左右各个方位的情况。
3. 截取时,需要高亮选中区域,用起始点坐标确定四个遮罩区域进行拼接。
4. 截取完成,需要显示controls,要根据起始点与页面边缘的距离考虑controls的显示位置。

  const [clipStartPoint, setClipStartPoint] = useState({});//起点
  const [clipEndPoint, setClipEndPoint] = useState({});//终点
  const [showClipPart,setShowClipPart]= useState(false);//是否显示遮罩区域(高亮)
  const [configVisible,setConfigVisible]= useState(false);//是否显示controls
  const [makingImg,setMakingImg]= useState(false);//生成截图
        html2canvas(document.body,{
            width:width,
            height:height,
            x:x,
            y:y
        }).then(function(canvas) {
            onSuccess(canvas.toDataURL('image/png'));
        });

后续,可以结合Canvas绘图功能,在controls中增加绘制功能,类似常用的微信截图功能。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 剖析流行的截图插件 html2canvas 的实现方案,探索其功能上的一些不足之处及不能正确截取的一些场景,...
    玄魂阅读 4,750评论 0 0
  • 最近做了个实现网页缩略图的项目,其中不免需要用到网页截屏。 一开始想的是看看能不能在前端直接实现截图,因为Web端...
    _Curtis阅读 8,238评论 0 3
  • 需求 今天接到一个新需求,需要在手机上实现对某张定位实现的自定义图片来生成一个邀请函,然后分享。 这个邀请函是必须...
    ErrorCode233阅读 7,445评论 0 4
  • screenshot(){ console.log('自动截图') //自动截图 html2canvas($("...
    小灰灰黢黑色阅读 4,196评论 0 0
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 11,017评论 0 5