位置: IT常识 - 正文

dom-to-image(dom-to-image原理)

编辑:rootadmin
dom-to-image 前言

推荐整理分享dom-to-image(dom-to-image原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:dom-to-image生成的图片存储在哪里,dom-to-image请求完,再执行下一步,dom-to-image 图片跨域,dom-to-image不清晰,dom-to-image不清晰,dom-to-image滚动区域截图,dom-to-image 图片跨域,dom-to-image 图片跨域,内容如对您有帮助,希望把文章链接给更多的朋友!

之前的文章:vue基于html2canvas和jspdf 生成pdf 、解决jspdf中文乱码问题 简单介绍了html2canvas的基本使用,html2canvas 只能截取可视区域,对于含有滚动条的无法完全截取。后来发现还有一个dom-to-image的库可以支持,并且能够生成svg、png、jpeg 3种格式,当然缺点是不支持safari,并且手机端上兼容性不好。

官方文档 ,不得不说有些库是真恶心,起个差不多的名字,找了半天才找到

安装npm install dom-to-imageimport domtoimage from 'dom-to-image';主要方法和属性

方法:

domtoimage.toPng(…);将节点转化为png格式的图片domtoimage.toJpeg(…);将节点转化为jpg格式的图片domtoimage.toSvg(…);将节点转化为svg格式的图片,生成的图片的格式都是base64格式domtoimage.toBlob(…);将节点转化为二进制格式,这个可以直接将图片下载domtoimage.toPixelData(…);获取原始像素值,以Uint8Array 数组的形式返回,每4个数组元素表示一个像素点,即rgba值。这个方法也是挺实用的,可以用于WebGL中编写着色器颜色。

属性:

filter : 过滤器节点中默写不需要的节点;bgcolor : 图片背景颜色;height, width : 图片宽高;style :传入节点的样式,可以是任何有效的样式;quality : 图片的质量,也就是清晰度;一个介于 0 和 1 之间的数字,表示 JPEG 图像的图像质量(例如 0.92 => 92%)。默认为 1.0 (100%)cacheBust : 将时间戳加入到图片的url中,相当于添加新的图片;imagePlaceholder : 图片生成失败时,在图片上面的提示,相当于img标签的alt;使用png<template> <div> <div style="padding:50px;width:500px;border:1px solid red;" id="test"> <p>我是p标签</p> <h1>我是h1标签</h1> <div>我是div标签</div> <img src="./11.jpg" style="width:200px;" /> </div> <el-button type="primary" @click="createImage">生成图片</el-button> <div style="width:500px;height:200px;margin-top:20px;border:1px solid red;"> <p>生成的图片</p> <img :src="dataUrl" style="width:200px;" /> </div> </div></template><script>import domtoimage from 'dom-to-image'export default { data() { return { dataUrl: '' } }, methods: { createImage() { let node = document.getElementById('test'); let that = this domtoimage.toPng(node) .then(function (dataUrl) { //console.log(dataUrl) that.dataUrl = dataUrl }) .catch(function (error) { console.error('生成失败', error); }); } }}</script>dom-to-image(dom-to-image原理)

效果

其他格式

代码同png,用对应的方法即可

属性

filter

createImage() { let node = document.getElementById('test'); let that = this domtoimage.toPng(node, { filter: that.filterTag }) .then(function (dataUrl) { console.log(dataUrl) that.dataUrl = dataUrl }) .catch(function (error) { console.error('生成失败', error); });},filterTag(node) { console.log(node, node.tagName) return node.tagName == 'IMG'}

注意:先打印一下标签名,一开始以为图片就是img结果是IMG

bgcolor

domtoimage.toPng(node, { bgcolor: '#ddd' }) .then(function (dataUrl) { console.log(dataUrl) that.dataUrl = dataUrl // FileSaver.saveAs(dataUrl, 'a.png'); }) .catch(function (error) { console.error('生成失败', error); });

其他略,没有尝试

下载图片

需要借助:file-saver,基本使用见:FileSaver.js的简单使用

示例:

<template> <div> <div style="padding:50px;width:500px;border:1px solid red;" id="test"> <p>我是p标签</p> <h1>我是h1标签</h1> <div>我是div标签</div> <img src="./11.jpg" style="width:200px;" /> </div> <el-button type="primary" @click="createImage">生成图片</el-button> <div style="width:500px;height:200px;margin-top:20px;border:1px solid red;"> <p>生成的图片</p> <img :src="dataUrl" style="width:200px;" /> </div> </div></template><script>import domtoimage from 'dom-to-image'import FileSaver from 'file-saver';export default { data() { return { dataUrl: '' } }, methods: { createImage() { let node = document.getElementById('test'); let that = this domtoimage.toPng(node) .then(function (dataUrl) { console.log(dataUrl) that.dataUrl = dataUrl FileSaver.saveAs(dataUrl, 'a.png'); }) .catch(function (error) { console.error('生成失败', error); }); }, }}</script>
本文链接地址:https://www.jiuchutong.com/zhishi/295866.html 转载请保留说明!

上一篇:卡鲁拉国家公园里的小湖,爱沙尼亚 (© Sven Zacek/Minden Pictures)(卡拉公路)

下一篇:在Vue 3中使用useStorage轻松实现localStorage功能(vue中的use)

  • 哪些收据可以入帐
  • 增值税报表解读
  • 实收资本增加印花税怎么算
  • 电子税务局财务报表在哪里查询
  • 发票抬头写错了还能改吗
  • 公司被扣货款怎么记账
  • 高新技术企业如何查询
  • 委托贷款利息收入账务处理
  • 超过一年的保证金怎么交个税
  • 净利润含不含所得税
  • 工会没有税号怎么开普票
  • 旅行社代订机票发票写个人能报销吗
  • 不计提盈余公积可以分红吗
  • 个体户财务负责人风险有哪些
  • 公司理财取得的成果
  • 民办学校会计分录 百度网盘
  • 所有者提取的借贷方向
  • 技术服务收入和产品服务收入举个例子
  • 总资产算不算负债
  • 把输入法关闭
  • 间接费用是什么费用
  • windows已禁用
  • PHP 中 Orientation 属性判断上传图片是否需要旋转
  • deepin怎么删除账户
  • sharedprem.exe - sharedprem是什么进程 有什么作用
  • 库乐队是苹果自带的嘛
  • 债务担保是什么意思
  • 代理记账费用计入什么会计科目
  • vue的watch不生效
  • php连接mysql数据库四步
  • php如何制作登录页面
  • redux-tookit
  • ChatGPT中国电话不能注册
  • 赠送礼品账务处理会计分录
  • 应付暂估账务处理
  • python np数组
  • 研发支出属于什么类
  • 注册资本印花税最新政策2023年
  • 所得税报表的营业成本包括费用吗
  • 疫情捐款可以抵扣增值税吗
  • 给离退休人员发放以前年度在岗奖金需要计提工会经费吗
  • 员工请假扣款怎么做分录
  • 差旅费属于什么会计科目 会计分录
  • 一般纳税人可以开1%的发票吗
  • 开票软件服务费全额抵扣怎么做账
  • 未开票的收入如何确认分录
  • 已抵扣未申报的税额如何转出
  • 财产清查怎么做分录
  • 复利现值系数和复利终值系数
  • 小企业会计准则和一般企业会计准则的区别
  • 资本公积和盈余公积的用途
  • 小规模纳税人租赁费税率
  • 什么叫小微企业主?
  • 预付账款无法取得发票如何处理
  • mysql新手入门
  • win8 设置打不开
  • sisusbrg.exe - sisusbrg是什么进程 有什么用
  • win7组合键失效
  • win8系统运行慢怎么办
  • win7如何打开windows功能
  • window10 .net3.5
  • cocos2d在运行java eclipse程序时出现 Error: could not open c:program FilesJavajre6libamd64jvm.cfg
  • opengl编译
  • Node.js中的包管理工具是什么
  • data命令
  • 表单元素的属性
  • nodejs xhr
  • js数组操作方法
  • 网页文件的标记是
  • 安卓抓包apk
  • JavaScript的removeChild()函数用法详解
  • 江苏省国家税务局
  • 减免性质代码怎么填写才正确
  • 增值税发票不够用怎么增票
  • 车船税优惠政策2022年
  • 冷库出租企业有哪些
  • 什么是征收率什么是税率
  • 青岛个人所得税咨询电话是多少
  • 水资源税征收标准2023
  • 国家税务总局2011年34号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设