前端界面网页截图(干货)

如果可以实现记得点赞分享,谢谢老铁~

看了一些谷歌插件,可以对网页进行局部截图或者是整个网页截图,于是想着弄个demo,关于前端的截图。最后选择了 html2canvas

1.下载安装包

Install NPM

npm install --save html2canvas

或者
Install Yarn

yarn add html2canvas

2.先看效果图

在这里插入图片描述

  • 点击【局部截图】按钮可以自定义指定想要的位置
  • 点击【整个网页截图】按钮将整个网页截图

3.代码演示

vue文件

 <script setup lang="ts">
    import {onMounted,toRef } from "vue";
    import html2canvas from "html2canvas";
    let imgUrl: any = toRef('')
    // 生成快照
    const convertToImage = (container, options?:  any) => {
        // 设置放大倍数
        const scale = window.devicePixelRatio;

        // 传入节点原始宽高
        const _width = container.offsetWidth;
        const _height = container.offsetHeight;
        if(options){
            let { width, height } = options;
            width = width || _width;
            height = height || _height;

        }
      

        // html2canvas配置项
        const ops = {
            scale,
            // width,
            // height,
            useCORS: true,
            allowTaint: false,
            ...options
        };
        return new Promise((resolve) => {
         html2canvas(container, ops).then(canvas => {
            //   document.body.appendChild(canvas);  // 直接是一个canvas图片
            
            // 返回图片的二进制数据
            // return canvas.toDataURL("image/png");
             // let dataURI = canvas.toDataURL('image/' + format, quality);  ps:  弃用
            // 生成的Base64图片将比使用toDataURL方法生成的小得多,并且可以方便地在浏览器中显示和处理。
           canvas.toBlob((blob: any) => {
                    const reader = new FileReader();
                    reader.readAsDataURL(blob);
                    reader.onloadend = () => {
                        resolve(reader.result);
                    }
                }, 'image/jpeg');
            });
        });
    }
    const clickBtn = async (num) => {
        let imgBlobData: any = ''
        // 调用函数,取到截图的二进制数据,对图片进行处理(保存本地、展示等)
        if(num === 1){
            // 局部
            imgBlobData =  await convertToImage(document.getElementById('content'));
        }else if(num === 2){
            // 整个网页
            imgBlobData = await convertToImage(document.body);
        }
        
        imgUrl.value = imgBlobData
       
    }
</script>
<template>
<div class="contrainer">
    <div>
        <h1>要呈现的HTML内容:</h1>
        <div id="content">将此元素中的内容仅渲染到现有的画布元素上</div>
    </div>
    <div>
         <h1>现有画布:</h1>
        <div class="img"> 
            <a-image :src="imgUrl"></a-image>
        </div>
    </div>
    <div class="btnCon">
       <a-button
            class="btn"
            size="large"
            @click="clickBtn(1)"
            >局部截图</a-button
          >
      <a-button
            class="btn"
            size="large"
            @click="clickBtn(2)"
            >整个网页截图</a-button
          >
    </div>
    
</div>
  
</template>
    <style>
        .contrainer{
            display: flex;
            flex-direction: column;
        }
        .img {
            width: 500px;
            height: 300px;
            border: 1px solid black;
        }
        .btnCon{
            display: flex;
        }
        .btn {
            cursor: pointer;
            width: 200px;
            margin: 20px 20px;
        }
        #content {
            background: rgba(100, 255, 255, 0.5);
            padding: 50px 10px;
        }

    </style>

重点在于

html2canvas(document.querySelector("#capture")).then(canvas => {
    document.body.appendChild(canvas)
});

收工!谢谢老铁们的点赞收藏~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/153881.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Linux上安装Oracle 数据库 11g (含静默方式安装)

好久没碰11g了&#xff0c;今天&#xff08;2023年11月16日&#xff09;因为有个需求又装了一遍。 在OCI上安装了一个Oracle Linux 6实例&#xff1a; $ uname -a Linux instance-20231116-1239-db11g 4.1.12-124.80.1.el6uek.x86_64 #2 SMP Mon Oct 9 02:32:10 PDT 2023 x86…

【已解决】启动SSH服务报“could not load host key”错误

文章目录 问题复现解决方案 问题复现 解决方案 yum remove openssh-* && yum install -y openssl openssh-server && systemctl restart sshd

Sqlite安装配置及使用

一、下载SQLite Sqlite官网 我下载的是3370000版本:sqlite-dll-win64-x64-3370000.zip 和 sqlite-tools-win32-x86-3370000.zip 二、解压下载的两个压缩包 三、配置环境 四、检查是否安装配置成功 winR&#xff1a;输入cmd调出命令窗口&#xff0c;输入sqlite3后回车查看s…

0x80070002错误代码要怎么解决?修复0x80070002的方法

0x80070002错误代码&#xff0c;这个系统更新相关的错误&#xff0c;经常在进行系统备份或更新时出现&#xff0c;打乱了我们的步调。为了帮助大家解决问题&#xff0c;本文将探讨该错误0x80070002产生的原因&#xff0c;提供详细的解决步骤&#xff0c;并分享预防措施。 一.0x…

配件仓库管理:WMS系统在制造业工厂的应用

一、配件仓库管理系统概述 WMS系统是一种针对仓库管理的软件系统&#xff0c;它涵盖了从物料入库、存储、打包、发货等一系列环节。对于制造业工厂而言&#xff0c;WMS系统可以有效地管理配件仓库&#xff0c;确保生产流程的顺畅。通过WMS系统&#xff0c;企业可以实现仓库的数…

机器学习的逻辑回归

Sigmoid函数 逻辑回归的预测函数 梯度下降法-逻辑回归 import matplotlib.pyplot as plt import numpy as np # 生成一个关于分类器性能的详细报告。 # 这个报告包含了每个类别的精度、召回率、F1分数&#xff0c;以及所有类别的平均精度、召回率和F1分数 from sklearn.metri…

2023上海国际电力电工展盛大举行 规模创新高 与行业「升级、转型、融合」

由中国电力企业联合会、国家电网主办及雅式展览服务有限公司承办的「第三十一届上海国际电力设备及技术展览会 (EP Shanghai 2023)」从11月15日起至17日一连三天于上海新国际博览中心盛大举行&#xff0c;并首度增设专题子展「上海国际储能技术应用展览会」。本届展会以“升级、…

FBI:皇家勒索软件要求350名受害者支付2.75亿美元

导语 最近&#xff0c;FBI和CISA联合发布的一份通告中透露&#xff0c;自2022年9月以来&#xff0c;皇家勒索软件&#xff08;Royal ransomware&#xff09;已经入侵了全球至少350家组织的网络。这次更新的通告还指出&#xff0c;这个勒索软件团伙的赎金要求已经超过了2.75亿美…

缩放图片算法优化 sse

前情提要 这里实现了打印文件的缩放算法 缩放打印文件&#xff08;prt,prn&#xff09; 核心功能如下&#xff1a; void CZoomPrtFile::zoomPrtFile(BYTE* pTargetData) {float xRatio static_cast<float>(m_perWidth - 1) / m_zoomWidth;float yRatio static_cast<…

YOLOv3 学习记录

文章目录 简介整体介绍整体架构图 网络架构的改进Backbone 的改进FPNAnchor 机制 坐标表示与样本匹配目标边界框的预测正负样本匹配 损失函数 简介 关注目标在哪里 目标是什么 目标检测的发展路径&#xff1a; proposal 两阶段 --> anchor-base/ anchor-free --> nms f…

深度学习之基于YoloV5安检仪危险品识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 深度学习之基于 YOLOv5 安检仪危险品识别系统介绍YOLOv5 简介安检仪危险品识别系统系统架构应用场景 二、功能三、系统四. 总结 一项目简介 深度学习之基于…

自动化网络图软件

由于 IT 系统的发展、最近向混合劳动力的转变、不断变化的客户需求以及其他原因&#xff0c;网络监控变得更加复杂。IT 管理员需要毫不费力地可视化整个网络基础设施&#xff0c;通过获得对网络的可见性&#xff0c;可以轻松发现模式、主动排除故障、确保关键设备可用性等。 为…

计算机视觉的应用17-利用CrowdCountNet模型解决人群数量计算问题(pytorch搭建模型)

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用17-利用CrowdCountNet模型解决人群数量计算问题(pytorch搭建模型)。本篇文章&#xff0c;我将向大家展示如何使用CrowdCountNet这个神奇的工具&#xff0c;以及它是如何利用深度学习技术来解决复杂…

《增长黑客》思维导图

增长黑客这个词源于硅谷&#xff0c;简单说&#xff0c;这是一群以数据驱动营销、以迭代验证策略&#xff0c;通过技术手段实现爆发式增长的新型人才。 近年来&#xff0c;互联网公司意识到这一角色可以发挥四两拨千斤的作用&#xff0c;因此对该职位的需求也如井喷式增长。本…

营业执照识别

目录 1、制作文本检测数据集 2、导出文本检测推理模型 3、制作语义实体识别数据集 4、训练模型 5、模型预测 6、模型导出 7、模型推理 1、制作文本检测数据集 文本检测数据集格式如下&#xff1a; dataset_dir # 数据集根目录&#xff0c;目录名称可以改变 ├── im…

【广州华锐互动】VR模拟真实火灾场景,教你如何正确逃生和自救

随着科技的不断发展&#xff0c;人们对于安全教育的需求也在不断提高。在消防安全领域&#xff0c;传统的培训方式已经无法满足现代社会的需求。为了提高人们的消防安全意识&#xff0c;提升应急处理能力&#xff0c;VR火灾自救逃生体验系统应运而生。 VR火灾自救逃生体验系统是…

金蝶云星空其他出库单保存提示序列号不一致

文章目录 金蝶云星空其他出库单保存提示序列号不一致保存报错初步分析总结 金蝶云星空其他出库单保存提示序列号不一致 保存报错 显示单据数量0.序列号数量3 初步分析 输入实发数量没有触发序列号数量的计算 检查实发数量的值更新事件 实发数量和序列号数量的转换&#xff…

我把MySQL运行在Docker上,差点完了……

容器的定义&#xff1a;容器是为了解决“在切换运行环境时&#xff0c;如何保证软件能够正常运行”这一问题。 目前&#xff0c;容器和 Docker 依旧是技术领域最热门的词语&#xff0c;无状态的服务容器化已经是大势所趋&#xff0c;同时也带来了一个热点问题被大家所争论不以&…

LeetCode【41】缺失的第一个正数

题目&#xff1a; 分析&#xff1a; 第i个位置的数&#xff0c;如果再数组 0到length-1范围内&#xff0c;则将其放到对应的位置&#xff1b; 再遍历一遍数组&#xff0c;找到第一个不在位置i的正数数字&#xff0c;即为所求 思路&#xff1a;https://blog.csdn.net/weixin_45…

【docker启动的Jenkins时,遇到时区问题处理】

1、查看容器中的时区 [rootlocalhost jenkins]# docker exec -it jenkins cat /etc/timezone Etc/UTC而本地使用的是Asia/shanghai [rootlocalhost jenkins]# timedatectl | grep Time zoneTime zone: n/a (CST, 0800)###查看 [rootlocalhost jenkins]# cd /usr/share/zoneinf…