使用html2canvas插件进行页面截屏

使用纯html实现过程

<!DOCTYPE html>
<html>

<head>
  <title>使用html2canvas生成网页截图</title>
  <script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
</head>

<body>
  <h1>使用html2canvas生成网页截图</h1>
  <div id="content">
    <p>这是一个要截图的元素12345</p>
  </div>

  <script>
    // target是代表要截图的元素范围(就是截图当前元素包括当前元素内的子元素)
    var target = document.getElementById('content')
    html2canvas(target).then(function (canvas) {
      // 参数canvas就是绘画的(截屏)的图片
      // 如果要给canvas元素添加css,本人亲测不行,只能用下面的方法给canvas元素加样式,加完样式再追加到页面中(亲测可行,本人暂时没有别的好办法,说的不对还请见谅)
      const capturedCanvas = canvas
      capturedCanvas.style.border = '2px solid red'
      // 将生成的图片追加到document.body里面
      document.body.appendChild(canvas)
    });
  </script>
</body>

</html>

使用框架(vue,react,uniapp)实现

需要先下载依赖包

npm install html2canvas

下面是一个完整的页面代码,可以直接运行

<template>
  <div ref="tu" id="tupian" style="font-family: initial;">
    <button @click="captureScreen">点击截屏</button>
	<image :src="imgurl" alt="" mode="aspectFill"/>
  </div>
</template>

<script>
import { ref } from 'vue';
import html2canvas from 'html2canvas';

export default {
  setup() {
	const tu = ref(null)
	const imgurl = ref('')
    const captureScreen = () => {
		// 截屏的元素区域
      var target = document.getElementById('tupian')
	  // 添加截屏的逻辑
          html2canvas(target).then(function (canvas) {
			  console.log(canvas);
			  // canvas就是当前截屏出来的屏幕样式,可以通过以下方法给生成的图片加样式
			  const capturedCanvas = canvas;
			  capturedCanvas.style.width = '100%';
			  capturedCanvas.style.height = '200px';
			  capturedCanvas.style.border = '2px solid red';
			  
			  // 将生成的界面添加到当前组件内(直接展示canvas,如果想替换img的话往下面看)
            // tu.value.appendChild(canvas)
			
			const dataURL = canvas.toDataURL();
			  // 这个就是base64格式的图片地址
			  console.log(dataURL);
			  // 将图片地址赋值给img
			imgurl.value = dataURL
          });
    };

    return {
      captureScreen,
	  tu,
	  imgurl
    };
  }
};
</script>
<style lang="scss">
</style>

效果图
在这里插入图片描述

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

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

相关文章

从Prefetch到Stream:重构v1.0代码库中的流式请求问题与解决方案

问题背景 在进行v1.0代码库的重构时&#xff0c;我们发现当前的prefetch参数存在一些问题。因此&#xff0c;我们计划将prefetch参数替换为stream。同时&#xff0c;我们决定在所有上传的操作中使用流式传输。 然而&#xff0c;是否需要对所有上传操作都进行流式传输存在一些疑…

设置chunk自动扩展到多大

1. 设置chunk自动扩展 execute function task(modify chunk extendable on,8); 2. 设置dbs扩展到多大合适 execute function task(modify space sp sizes,testdb1024,1024,10240) testdb 初始1MB 下次扩1MB 最大10MB

「Java开发指南」如何在Spring中使用JAX-WS注释器?

本文将指导您如何使用JAX-WS注释器从Spring服务生成JAX-WS Web服务&#xff0c;在本教程中&#xff0c;您将学习如何&#xff1a; 为Spring服务启用JAX-WS部署应用程序并测试服务 所有与Spring scaffolding相关的任务都需要MyEclipse Spring或Bling授权。 MyEclipse v2023.1…

成都瀚网科技有限公司抖音带货是否靠谱

成都瀚网科技有限公司&#xff0c;作为一家专业的科技公司&#xff0c;近年来积极参与了抖音带货的浪潮&#xff0c;凭借其出色的产品和服务&#xff0c;赢得了广大用户的信赖。 在当今的数字化时代&#xff0c;抖音带货已经成为了一种非常流行的购物方式。消费者可以通过抖音平…

elementui 实现树形控件单选

实现&#xff1a; <!--author: itmacydesc: 树节点单选 --> <template><div class"about"><el-tree :data"data"ref"tree":props"defaultProps"node-key"id"show-checkboxcheck-strictlycheck-change…

解决SSH连接自动断开的问题

一、环境 centos7.6 xshell7 二、目标 ssh长联状态&#xff0c;不主动断开 三、实施 1.修改/etc/profile文件 末尾添加export TMOUT0 vim /etc/profileexport TMOUT02.修改/etc/ssh/sshd_config文件 默认都被注释掉&#xff0c;放开并设置CAI参数为0-60间 vim /etc…

Python中表格插件Tabulate的用法

目录 一、引言 二、Tabulate插件安装与导入 三、Tabulate基本用法 1、创建表格&#xff1a; 2. 格式化表格&#xff1a; 3. 表格转置&#xff1a; 4、合并单元格&#xff1a; 5、指定每列的格式&#xff1a; 6、指定每行的格式&#xff1a; 7、使用自定义表格格式&am…

kubernetes学习笔记-概念

参考&#xff1a;https://kubernetes.io/zh-cn/docs/concepts/overview/ 概述 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态&#xff0c;其服务、…

观测云产品更新 | 监控、图表、服务管理、单点登录、Pipeline 等优化

观测云更新 监控相关的若干使用优化 1.【告警沉默】功能回归&#xff0c;您仍可以通过告警沉默配置定义重复告警通知的时间间隔。 2.【监控器】删除 ”紧急“、”重要“、”警告“触发条件必须配置任意一项的限制&#xff0c;您可任意配置”紧急“、”重要“、”警告“、”无…

实时云渲染与带宽探讨:解密数字新基建中的网络技术

随着“数字新基建”和5G技术的蓬勃发展&#xff0c;数字孪生、智慧工厂、智慧城市、虚拟仿真教学等领域正经历着迅速的技术进步。部署方案也由最初的本地部署&#xff0c;发展到webGL本地网络方式再到最新的实时云渲染技术。本文将深入探讨实时云渲染技术方案对于带宽的要求条件…

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏4(附项目源码)

文章目录 先看本次实现的最终效果前言把敌人和炮塔全部配置成预制体炮塔商店打开商店放置炮塔升级炮塔出售显示炮塔攻击范围显示玩家金额和血量关闭升级面板和商店功能源码完结 先看本次实现的最终效果 前言 本期紧接着上一篇&#xff0c;本期主要内容是实现商店、购买、出售、…

Python学习笔记--自定义元类

四、自定义元类 到现在&#xff0c;我们已经知道元类是什么鬼东西了。 那么&#xff0c;从始至终我们还不知道元类到底有啥用。 只是了解了一下元类。 在了解它有啥用的时候&#xff0c;我们先来了解下怎么自定义元类。 因为只有了解了怎么自定义才能更好的理解它的作用。…

《向量数据库指南》——2023云栖大会现场,向量数据库Milvus Cloud成关注焦点

近期,广受关注的2023 云栖大会正式收官,来自全球各地的开发者集聚一堂,共同探索 AI 时代的更多可能性。 云栖大会是由阿里巴巴集团主办的科技盛宴,是中国最早的开发者创新展示平台。据悉,今年云栖大会的主题为“计算,为了无法计算的价值”,共吸引了全球 44 个国家和地区…

【MySQL8】1130 - Host *** is not allowed to connect to this MySOL server

问题描述 使用 Navicat 连接 MySQL8 报错&#xff1a; 1130 - Host *** is not allowed to connect to this MySOL server解决方案 use mysql;select host ,user from user; -- 将 root 用户的主机&#xff08;host&#xff09;值修改为 %&#xff0c;即允许从任何主机连接 …

进阶JAVA篇- Lambda 表达式与 Lambda 表达式的省略规则

目录 1.0 什么是 Lambda 表达式&#xff1f; 1.1 既然跟匿名内部类相关&#xff0c;先来回顾匿名内部类。 1.2 Lambda 表达式与匿名内部类之间的关系。 1.3 函数式接口 1.4 在具体代码中来操作一下 2.0 Lambda 表达式省略规则 1.0 什么是 Lambda 表达式&#xff1f; Lambda 表达…

SQL server从安装到入门(一)

文章目录 彻底安装怎么安装&#xff1f;Polybase要求安装orcale jre 7更新 51或更高版本&#xff1f;安装完怎么配置&#xff1f;没有SSMS&#xff1f; 熟悉一下SMSS&#xff01; 根据本人实际安装和初步使用SQL server的过程中&#xff0c;经历的一些关键性的步骤和精品文章。…

【volatality 3】使用说明文档

由于volatility2.6 和3.0 版本之间略有差异,所以特写本文档用来学习参考。 在vol3 中不需要指定profile,而是在命令中指定系统。 如windows.info、Windows.pslist 使用示例 文档说明 本文作者:SwBack 创作时间:‎2022‎年‎6‎月‎14‎日&#xff0c;‏‎15:47:05 知乎:https…

OPPO发布AndesGPT大模型;Emu Video和Emu Edit的新突破

&#x1f989; AI新闻 &#x1f680; OPPO发布全新ColorOS 14及自主训练的AndesGPT大模型 摘要&#xff1a;OPPO在2023 OPPO开发者大会上发布了全新的ColorOS 14&#xff0c;并正式推出了自主训练的安第斯大模型&#xff08;AndesGPT&#xff09;。AndesGPT拥有对话增强、个人…

集合贴——智能客服是什么

基础课1——智能客服的定义-CSDN博客文章浏览阅读166次。智能客服是一种采用人工智能技术的客户服务方式&#xff0c;它通过语音识别、自然语言处理、语义理解等技术&#xff0c;实现了与客户的自动交互。https://blog.csdn.net/2202_75469062/article/details/134406392?spm1…

为什么选择CodeEase?

目录 为什么选择CodeEase核心功能后端前端 框架结构总结 为什么选择CodeEase CodeEase是一个标准化的低代码平台 愿景 我们励志开发一站式服务&#xff0c;缩短网站开发周期&#xff0c;降低程序bug率&#xff0c;减少开发人力和成本&#xff0c;推出了多租户SaaS平台开发模板…