位置: 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)

  • 新闻稿发布怎样能发到手机客户端?(新闻稿方法)

    新闻稿发布怎样能发到手机客户端?(新闻稿方法)

  • 小米手表color2可以下载微信吗(小米手表Color2可以和其他手机)

    小米手表color2可以下载微信吗(小米手表Color2可以和其他手机)

  • 苹果手机可以用别的蓝牙耳机吗(苹果手机可以用nfc功能吗)

    苹果手机可以用别的蓝牙耳机吗(苹果手机可以用nfc功能吗)

  • 蚂蚁森林怎么浇水(蚂蚁森林怎么浇水1000)

    蚂蚁森林怎么浇水(蚂蚁森林怎么浇水1000)

  • 华为荣耀8x和9x区别(华为荣耀8X和vivoz3i哪个好)

    华为荣耀8x和9x区别(华为荣耀8X和vivoz3i哪个好)

  • 拼多多5分钟回复率不能低于多少(拼多多5分钟回复)

    拼多多5分钟回复率不能低于多少(拼多多5分钟回复)

  • 电脑qq提示音怎么静音(电脑qq提示音怎么设置)

    电脑qq提示音怎么静音(电脑qq提示音怎么设置)

  • 联想m7600d打印机清零步骤(联想m7600d打印机驱动下载)

    联想m7600d打印机清零步骤(联想m7600d打印机驱动下载)

  • 音箱线和普通电线区别(音箱线和普通电线音质区别?)

    音箱线和普通电线区别(音箱线和普通电线音质区别?)

  • 撤回键是哪个(撤回键是哪一个)

    撤回键是哪个(撤回键是哪一个)

  • 淘宝永久冻结怎么解封(淘宝永久冻结怎么注销支付宝)

    淘宝永久冻结怎么解封(淘宝永久冻结怎么注销支付宝)

  • 笔记本电脑可以下载万能钥匙吗(笔记本电脑可以外接显卡吗?)

    笔记本电脑可以下载万能钥匙吗(笔记本电脑可以外接显卡吗?)

  • 爱奇艺可以更改手机号码吗(爱奇艺可以更改成日语)

    爱奇艺可以更改手机号码吗(爱奇艺可以更改成日语)

  • 淘宝买家降权多久恢复(淘宝买家降权多少钱)

    淘宝买家降权多久恢复(淘宝买家降权多少钱)

  • 微信被投诉后多久正常(微信被投诉后多久可以申请注销账号)

    微信被投诉后多久正常(微信被投诉后多久可以申请注销账号)

  • 光路认证失败什么意思(光路认证失败什么原因)

    光路认证失败什么意思(光路认证失败什么原因)

  • 抖音能分身吗(抖音能分身吗怎么分身)

    抖音能分身吗(抖音能分身吗怎么分身)

  • 小米6aptx怎么开启

    小米6aptx怎么开启

  • 微信收款码是什么(微信收款码怎么申请商家收款码)

    微信收款码是什么(微信收款码怎么申请商家收款码)

  • 华为mate30pro怎么插卡(华为mate30pro怎么刷机)

    华为mate30pro怎么插卡(华为mate30pro怎么刷机)

  • 监控摄像头3mp是什么意思(家用监控3mp是什么)

    监控摄像头3mp是什么意思(家用监控3mp是什么)

  • 手机被偷只补卡可以吗(手机被偷补卡后原来的卡还能用吗)

    手机被偷只补卡可以吗(手机被偷补卡后原来的卡还能用吗)

  • 苹果粘贴板历史记录(ios 粘贴板历史记录)

    苹果粘贴板历史记录(ios 粘贴板历史记录)

  • facebook怎么使用(facebook怎么使用教程)

    facebook怎么使用(facebook怎么使用教程)

  • 2023年享受六税两费减免吗
  • 如何确定关联方及关联关系
  • 个人所得税手续费返还属于政府补助吗
  • 增值税发票查询网络异常
  • 全球第一家上市的互联网电商平台
  • 公司组织旅游的费用要交个税
  • 专款专用需要缴纳企业所得税吗?
  • 删除申报记录什么意思
  • 回退税款所属期具体条件是
  • 小规模纳税人的企业所得税税率
  • 一般纳税人减免增值税政策
  • 开具3%增值税发票
  • 搬迁补偿收入计入什么会计科目
  • 政府补贴项目申报流程
  • 交增值税入什么科目
  • 购买的固定资产可以一次计入管理费用吗
  • 一般纳税人两费减免会计分录
  • 租用仓库需要代扣代缴企业所得税吗
  • 应收账款减值准备可以税前扣除吗
  • 收到上级补助收入支出时财务会计怎么记账
  • 业务招待费不超过销售收入的5‰
  • 甲供材料如何纳税
  • 办公费差旅费属于
  • 购买原材料的运费属于什么费用
  • 华为matex3用什么芯片
  • 收回已核销的坏账并入账
  • 赠与合同要公证吗有效吗
  • bios boot设置
  • 土地增值税清算全流程实战案例
  • 自产货物用于生产
  • 商票 银行贴现
  • 资产收购的账务处理
  • 进程lsass.exe
  • 公司向职工借款利息需要交税吗
  • 金融企业呆账核销管理办法
  • vue引入svg图片
  • php调用外部程序
  • ChatGPT-Next-Web:Vercel 和 Cloudflare 的快速部署
  • vue动态组件component原理
  • “php”
  • mysql5.5命令
  • 个人所得税申报退税能退多少
  • 个体工商户营业执照注销流程
  • 实收资本的账务处理与其他应收款
  • 生育津贴的支付期限表述不正确的是
  • 暂估入库估多了,汇算清缴前调整
  • 公司买车可以少多少钱
  • 筹建期发生的费用怎么申报
  • 公司账户可以转个人支付宝吗
  • 土地使用税和房产税是一起的吗
  • 汽车销售企业的资产有哪些
  • 外贸整个流程图
  • mysql连接问题
  • Windows 8.1下MySQL5.7 忘记root 密码的解决方法
  • U盘硬装WIN7 64位旗舰系统,是怎样练成的(妹子装机衔接篇)
  • usbmonit.exe - usbmonit是什么进程
  • windows累积更新
  • 如何知道自己的邮箱号
  • win7怎么禁止系统自动更新
  • windows 10 mobile--移动版
  • newsupd.exe - newsupd是什么进程 有什么用
  • linuxzen
  • win 10移动版
  • win7怎样设置屏幕保护密码
  • Extjs ajax同步请求时post方式参数发送方式
  • css display none之后怎么显示回来
  • cocos2d官网
  • Nodejs实现多人同时在线移动鼠标的小游戏分享
  • unity3d官方教程
  • hadoop有几个版本
  • npm安装nodemodules
  • dns设置为网关会出现什么问题了
  • jquery给下拉框添加选项
  • jQuery插件封装时如要实现链式编程,需要
  • jquery限制字符长度
  • ndk调用so
  • js判断ua
  • python+flask
  • 河南十大纳税公司
  • 马云交了多少税费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设