将html转化成图片

如何将指定html内容转化成图片保存?这个问题很值得深思,实际应用中也很有价值。最直接的想法就是使用canvas,熟悉canvas的同学可以尝试一下。这里不做太多的说明,本文采用html2canvas库来实现。

html2canvas库的使用非常简单,只需要引入html2canvas库,然后调用html2canvas方法即可,官方地址。

接下来说一下简单的使用,以react项目为例。

获取整个页面截图,可以使用底层IDroot,这样下载的就是root下的所有元素。

import html2canvas from "html2canvas";const saveCanvas = () => {// 画布基础元素,要绘制的元素const canvas: any = document.getElementById("root");const options: any = { scale: 1, useCORS: true };html2canvas(canvas, options).then((canvas) => {const type = "png";// 返回值是一个数据url,是base64组成的图片的源数据let imgDt = canvas.toDataURL(type);let fileName = "img" + "." + type;// 保存为文件let a = document.createElement("a");document.body.appendChild(a);a.href = imgDt;a.download = fileName;a.click();});};

图片的默认背景色是#ffffff,如果想要透明色可设置为null,比如设置为红色。

const options: any = { scale: 1, useCORS: true, backgroundColor: "red" };

正常情况下网络图片是无法渲染的,可以使用useCORS属性,设置为true即可。

const options: any = { scale: 1, useCORS: true };

保存某块元素的截图

const canvas: any = document.getElementById("swiper");

如果希望将某些元素排除,可以将data-html2canvas-ignore属性添加到这些元素中,html2canvas将从渲染中排除这些元素。

<Buttondata-html2canvas-ignorecolor="primary"fill="solid"onClick={saveCanvas}
>download
</Button>

完整代码

npm install html2canvas
// demo.less
.contentSwiper {width: 710px;height: 375px;color: #ffffff;display: flex;justify-content: center;align-items: center;font-size: 48px;user-select: none;
}
.swiper {padding: 0 20px;
}
import React from "react";
import { Button, Space, Swiper } from "antd-mobile";
import html2canvas from "html2canvas";
import styles from "./demo.less";export default () => {const saveCanvas = () => {// 画布基础元素,要绘制的元素const canvas: any = document.getElementById("root");const options: any = { scale: 1, useCORS: true, backgroundColor: "red"};html2canvas(canvas, options).then((canvas) => {const type = "png";// 返回值是一个数据url,是base64组成的图片的源数据let imgDt = canvas.toDataURL(type);let fileName = "img" + "." + type;// 保存为文件let a = document.createElement("a");document.body.appendChild(a);a.href = imgDt;a.download = fileName;a.click();});};const colors: string[] = ["#ace0ff", "#bcffbd", "#e4fabd", "#ffcfac"];const items = colors.map((color, index) => (<Swiper.Item key={index}><div className={styles.contentSwiper} style={{ background: color }}>{index + 1}</div></Swiper.Item>));return (<div className="content"><div id="swiper" className={styles.swiper}><Swiperstyle={{"--track-padding": " 0 0 16px",}}defaultIndex={1}>{items}</Swiper></div><div><imgwidth={200}src="https://t7.baidu.com/it/u=2621658848,3952322712&fm=193&f=GIF"/></div><Space><Buttondata-html2canvas-ignorecolor="primary"fill="solid"onClick={saveCanvas}>download</Button><Button color="primary" fill="solid">Solid</Button><Button color="primary" fill="outline">Outline</Button><Button color="primary" fill="none">None</Button></Space></div>);
};

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年pmp考试还有多久啊?怎么备考?

一般来说每年3、6、9、12月考试&#xff0c;一年四次&#xff0c;具体时间以官网通知为准。报考时间提前2个月报名&#xff0c;2023年的最后一次考试时间是11月&#xff0c;已经截止报名了。所以下一次考试就得等到2024年3月了。 想知道怎么备考先来分析一下现在的“新”考纲&…

基于ERC20代币协议实现的去中心化应用平台

文章目录 内容简介设计逻辑ERC20TokenLoanPlatform 合约事件结构体状态变量函数 Remix 运行实现部署相关智能合约存款和取款贷款和还款 源码地址 内容简介 使用 solidity 实现的基于 ERC20 代币协议的借贷款去中心化应用平台(极简版)。实现存款、取款、贷款、还款以及利息计算的…

KubeSphere金丝雀发布流量分布调节不生效(将所有流量按比例分配给灰度发布版本)

如题 金丝雀发布按照流量比例访问不能生效 1、自制应用生成的路由添加注释: nginx.ingress.kubernetes.io/service-upstream:"true" 2、项目网关开启 3、完成 以上&#xff0c;祝好。

DBA-MySql面试问题及答案-上

文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎&#xff1f;6.可以针对表设置引擎吗&#xff1f;如何设置&#xff1f;6.选择合适的存储引擎&#xff1f;7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…

Linux 安装 Tomcat

1、找到安装包 2、解压缩 tar -xzvf xxx.tar.gz Tomcat 很好安装&#xff0c;已经安装好了 3、启动、关闭Tomcat 进入解压后文件夹之后&#xff0c;两个文件分别是启动和关闭 sh startup.sh // 启动 sh shutdown.sh // 关闭 然后就行了 4、主机连接虚拟机Tomcat 注意这里填写…

当物联网技术遇上圣诞节,会给你带来怎样的商业灵感

智能物联网项目可以将更浓烈的节日气氛融入到千家万户。有市场嗅觉的朋友已经踏上了这种创新与传统相遇的旅程&#xff0c;你可以参考一下他们的点子。 物联网智能照明 借助物联网技术&#xff0c;你可以创建一个智能照明系统&#xff0c;让每一束灯光闪烁出美妙的色彩或图案…

共享购:消费前沿的领导者

在当今这个信息化、互联网高速发展的时代&#xff0c;商业模式也在不断地创新和变革。共享购模式作为一种新型的商业模式&#xff0c;正逐渐受到广泛的关注和追捧。本文将深入探讨共享购模式的核心理念、优势以及如何应用在实际商业场景中&#xff0c;为读者揭示这一模式的巨大…

一起学量化之macd指标

macd指标 1. macd指标定义 MACD的组成要素MACD称为异同移动平均线&#xff0c;是从双指数移动平均线发展而来的。MACD由一根快线、一根慢线、一根0轴线和无数根红绿柱状线组成。 如下图所示&#xff0c;粉色的是快线&#xff0c;也称DIFF线&#xff1b;蓝色的是慢线&#xf…

基于Java SSM框架实现在线课程教育资源考试管理系统项目【项目源码+论文说明】

基于java的SSM框架实现在线课程教育资源考试管理系统演示 摘要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线教育资源管理系统&#xff0c;主要的模块包括管理员&#xff1b;个人中心、学生…

html5实现最震撼公司年会抽奖(源码)

文章目录 1.设计来源1.1 主界面1.2 抽奖效果1.3 中奖效果 2.效果和源码配置2.1 动态效果2.2 员工信息配置2.3 奖品信息配置2.4 抽奖音效配置2.5 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/12864099…

Kali字典生成工具crunch使用教程

Kali字典生成工具crunch使用教程 1.工具概述2.参数解释3.使用实例1.工具概述 crunch是一个kali自带生成字典的一个工具,一种创建密码字典工具,该字典通常用于暴力破解。使用crunch工具生成的密码可以发送到终端、文件或另一个程序 安装: apt install crunch验证安装: c…

华为数通方向HCIP-DataCom H12-831题库(多选题:241-249)

第241题 (NEW) 以下哪些操作可能会影响客户网络的正常运行? A、从设备上下载日志 B、软件升级 C、路由协议配置变更 D、debug核心交换机上转发的所有IP报文 答案:ABCD 解析: 第242题 对于防火墙的默认安全区 Trust 和 Untrust 的说法,正确的有 A、从 Trust 区域访问 Untr…