HTML 转图片

  • 前言
  • 下载脚本
  • 官网案例
  • 图片模糊

前言

在用某讯浏览器时,发现遇到自己喜欢的网站除了可以网页另存为,还可以将网页保存为图片,这功能还是很不错的。Echarts 图表也提供了将图表转换为图片的功能。

近期遇到了同样的需求,领导要求每天汇报工作,工作都是通过系统统计为表格,需要截图,可是因为数据较多,图片不能一下子截全,于是迸发了这样的想法,将表格直接转换为图片

下载脚本

本着效率的原则,决定借助互联网大法,最终选择了 HTML2CANVAS ,它是一个 JS 脚本,封装了 Canvas 组件。这个脚本在 GitHub 上进行了托管。

从 HTML2CANVAS 官网 下载脚本,导入到项目中。

官方提供了三种方式:

  • Install NPM

    npm install --save html2canvas
    
  • Install Yarn

    yarn add html2canvas
    
  • 脚本导入

    http://html2canvas.hertzen.com/dist/html2canvas.min.js
    

官网案例

  • 准备要转换为图片的HTML代码
<div id="capture" style="padding: 10px; background: #f5da55"><h4 style="color: #000; ">Hello world!</h4>
</div>
  • 编写 JS 脚本
// html2canvas(element, options);
html2canvas(document.querySelector("#capture")).then(function(canvas) {document.body.appendChild(canvas);
});

调用 html2canvas 方法,方法有两个参数。执行函数中有一个参数canvas<canvas></canvas>组件,将该组件直接添加到 body 中,当然也可以根据实际需求放到指定的元素中,例如:模态框等。

​ 参数一:元素对象,要转换为图片的元素对象;

​ 参数二:配置项

参数 默认值 描述
allowTaint false 是否允许跨域图像污染画布
backgroundColor #ffffff 画布背景色(如果未在 DOM 中指定)。设置 null 为透明。
canvas null 在指定 canvas 元素中绘图,不是用默认 canvas
foreignObjectRendering false 如果浏览器支持,是否使用外来对象呈现
imageTimeout 15000 加载图像超时(以毫秒为单位)。设置 0 禁用超时。
ignoreElements (element) => false 从呈现中删除匹配元素。
logging true 启用日志记录以进行调试
onclone null 在克隆文档以进行呈现时调用的回调函数可用于修改将要呈现的内容,而不会影响原始源文档
proxy null 用于加载跨源映像的代理的 URL。如果留空,则不会加载跨源图像。
removeContainer true 是否清理 html2 扫描插件临时创建的克隆 DOM 元素
scale window.devicePixelRatio 用于渲染的比例。默认为浏览器设备像素比。
useCORS false 是否尝试使用 CORS 从服务器加载映像
width Element width canvas
height Element height canvas
x Element x-offset 裁剪画布 x 坐标
y Element y-offset 裁剪画布 y 坐标
scrollX Element scrollX 呈现元素时要使用的 x 滚动位置(例如,如果 元素使用position: fixed)
scrollY Element scrollY 呈现元素时要使用的 y 滚动位置(例如,如果 元素使用position: fixed)
windowWidth Window.innerWidth 呈现时要使用的窗口宽度,这可能会影响媒体查询等内容Element
windowHeight Window.innerHeight 渲染时要使用的窗口高度,这可能会影响媒体查询等内容Element

图片模糊

添加如下配置项:

html2canvas(document.querySelector("#capture"),{scale: 2, // 处理图片模糊问题
}).then(function(canvas) {document.body.appendChild(canvas);
});

【技术】烦死了,HTML 怎么转图片?相关推荐

  1. 朋友说要被他女朋友烦死了,竟然是因为“小视频”

    每天早上七点三十,准时推送干货 Photo by Chewy on Unsplash Hello,大家好,我是阿粉,前几天阿粉的一个朋友跟阿粉抱怨说自己快被女朋友烦死了,他说自己的女朋友报了一个舞蹈班 ...

  2. 【安装pycocotools,烦死了】

    *************************************************** 码字不易,收藏之余,别忘了给我点个赞吧! *************************** ...

  3. 是SEO技术已死 还是你不懂SEO?

    是SEO技术已死 还是你不懂SEO?现在各个博客的SEO文章同质化比较严重,因为SEO被大家都写烂了,写来写去无非就是内容.外链.用户体验.但我总是看到很多人评论说SEO技术已死,我实在忍不住想写一下 ...

  4. JSP技术已死 ? (Java Server Page technology will die) ?

    JSP技术已死 ? (Java Server Page technology will die) ? 自从JamesGosling开发Java语言,SUN大力推行基于Java的从前端到后端的完整的企业 ...

  5. 怎么取消苹果手机自动续费_为取消苹果手机收费、自动续费软件烦死了,别急,今天一招教会你...

    前段时间因为要用手机做视频下载了三.四个视频的软件,但很多视频的软件是付费的,分为每月.每季或全年,有些收费是自动续费的,本来想先用一个月试用,结果有些人就知道为什么变成了自动续费了. 我用的一个叫乐 ...

  6. 前沿AI技术体验:从文字直接产生图片,结果真的震撼! 非常有意思!

    前沿AI技术体验:从文字直接产生图片,结果真的震撼! 非常有意思! 背景 最近这段时间,大火的文本转图片的模型,不管是 Open AI 的 DALL·E 还是 Goggle 的 Imagen. 单从公 ...

  7. 2021,烦死了,烦死了,烦死了!

    铛铛铛铛铛,祝大家元宵节快乐呀! 快乐的同时也预示着,2021的年也要真正意义上的过去了. 忆往昔,五年前,你可能还是个职场新人,对工作充满敬畏,五年后,各种磨炼让你变成了职场"老油条&qu ...

  8. android 之适配器与json对象解析技术的联用的进一步优化(解决图片错位)

    ListView优化的模型示意图 实例代码: 业务逻辑代码: package com.hsj.example.asyncloadxmldatademo08;import android.app.Pro ...

  9. python数字识别关键技术_用Python从零开始设计数字图片识别神经网络--搭建基本架构...

    从本节开始,我们用python把前几节讲解的神经网络原理实现出来.在最开始时,我们直接调用Kera框架,快速的构建一个能识别数字图片的神经网络,从本节开始,我们自己用代码将整个神经网络重新实现一遍,只 ...

最新文章

  1. 第二次scrum冲刺
  2. 欧几里得距离网络_Scientific Reports|基于集成相似度的神经网络药物相互作用预测...
  3. linux监控目录变动
  4. 网上有打印按键怎么设置下载_打印机共享怎么设置 如何设置打印机共享【详细攻略】...
  5. 理解Python中的类对象、实例对象、属性、方法
  6. 容器技术之二.Docker的安装和常见问题
  7. web系统架构设计中需要知道的点(前端篇)
  8. 第三章 组装个人计算机
  9. 如何理解产品经理的核心竞争力
  10. Struts2之HttpServletRequest、HttpServletResponse,HttpSession,Parameters处理
  11. ElasticSearch的安装过程
  12. Java拓展(数据类型及其大小)
  13. 3dm java32位_3DM游戏运行库合集安装包v2.3
  14. HDU5442(字符串的最大表示法或者后缀数组)
  15. Python+大数据-数仓实战之滴滴出行(二)
  16. alpha shapes提取边界原理及详细步骤
  17. xjoi 1542 玩玩拉格朗日四平方和定理
  18. 阿里巴巴获得商品详情 API 返回值说明
  19. 【FICO】S4下的资产年结
  20. Python之数据分析总结

热门文章

  1. NOIP2016模拟赛 序 (LIS)
  2. acrobat adobe合并多个PDF发票文件后,电子公章丢失
  3. 爬虫之非结构化数据爬取:字符串find,split应用
  4. c# 32位程序突破2G内存限制
  5. js palette
  6. 第7.14节 Python类中的实例方法详析
  7. 我的oracle + blog之旅
  8. Menu:选项菜单,上下文菜单,弹出式菜单
  9. soul网关监控插件的使用
  10. Ceph测试系列(三):Ceph集群(3 osd节点)dd及rados bench 性能测试