使用html2canvas.js将HTML生成图片
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../script/jquery-1.9.1.min.js"></script>
<script src="../script/html2canvas.js"></script>
<style type="text/css">
.divBody {
position: absolute;
width: 100%;
height: 100%;
background: url(../images/bg.jpg) no-repeat center top;
background-size: 100% 100%;
font-family: "黑体";
color: #292929;
letter-spacing: 2px;
z-index: 1000;
} .divInfo {
width: 76%;
margin-left: 12%;
position: relative;
top: 25%;
text-align: center;
}
#btnDown{
position:absolute;
top:15px;
right:10px;
z-index:1000;
cursor: pointer;
} </style>
</head> <body>
<div id="divBody" class="divBody">
<div class="divInfo" id="divInfo">
<h1>剑来语录</h1>
<div>
<p>我住人间万古宅,大日高升在墙东。</p>
<p>睁眼便觉扰清梦,敕令明月坠其中。</p>
<p>天上仙佛三百万,遇我也须称上神。</p>
<p>醉乘白鹿驾青虬,列仙遇我求醇酒。</p>
<p>挂冠天宫桂枝上,手抓金乌做炭笼。</p>
<p>悲哉仙人千秋梦,一梦见我误长生。</p>
</div>
</div>
</div>
<div id="btnDown">
<img src="../images/share.png" style="width:2rem;height:2rem;" />
</div>
</body> </html>
<script type="text/javascript">
$(function () {
$("#btnDown").click(function () {
downPNG("下载图片.png", "divBody");
});
}); function downPNG(pngName, pngId) {
var scaleBy = getDPR();//获取像素比 var canvas = document.createElement('canvas');// 创建自定义 canvas 元素
// 设定 canvas 元素属性宽高为 DOM 节点宽高 * 像素比
var width = document.getElementById(pngId).clientWidth;
var height = document.getElementById(pngId).clientHeight; canvas.width = width * 2;
canvas.height = height * 2; var context = canvas.getContext('2d');
// 将所有绘制内容放大像素比倍
context.scale(2, 2);
var rect = document.getElementById(pngId).getBoundingClientRect(); //获取元素相对于视察的偏移量
context.translate(-rect.left, -rect.top); //设置context位置,值为相对于视窗的偏移量负值,让图片复位 html2canvas(document.getElementById(pngId), {
canvas,
dpi: 300,
scale: 1,
useCORS: true, //(图片跨域相关)
allowTaint: false, //允许跨域(图片跨域相关)
onrendered: function (imgCanvas) {
var imgData = imgCanvas.toDataURL('image/octet-stream');
if (imgCanvas.msToBlob) { // IE 9+浏览器
var blob = imgCanvas.msToBlob();
window.navigator.msSaveBlob(blob, pngName);
} else {
saveFile(imgData, pngName);
}
}
});
} function saveFile(data, filename) { //微信浏览器不能直接下载图片,需要展示一张图片长按下载...
if (is_weixn()) {
//方法一
var img = document.createElement('img');
img.src = data;
img.style.width = "100%";
$("#divBody").html(img); //方法二
// var html = "<img src ='" + data + "' style='width:100%;height:100%' />";
// $("#divBody").html(html); $("#btnDown").hide();//隐藏分享按钮 alert("图片生成成功,长按保存图片!");//提示用户长按下载图片
} else {
console.log(1);
//直接下载图片
var save_link = document.createElement('a');
save_link.href = data;
save_link.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
} }; function getDPR() {
if (window.devicePixelRatio && window.devicePixelRatio > 1) {
return window.devicePixelRatio;
}
return 2;
} function is_weixn() {
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
return true;
} else {
return false;
}
} </script>
使用html2canvas.js将HTML生成图片的更多相关文章
- html2canvas.js网页截图功能
需求:将网页生成图片,用户自行长按图片进行保存图片,再分享朋友圈.其中,都可识别图中的二维码.(二维码过小会识别不出) 首先,先来科普一下微信网页识别二维码原理:截屏识别,当客户端发现用户在网页的im ...
- html2canvas.js——HTML转Canvas工具
我们经常会遇上动态生成海报的需求,而在Web前端中,生成图片非Canvas莫属.但是在实际工作当中,为了追求效率,我们会不可避免地去使用一些JS插件,而html2canvas.js就是一款优秀的插件, ...
- IText&Html2canvas js截图 绘制 导出PDF
Html2canvas JS截图 HTML <div id="divPDF"> 需要截图的区域 </div> JS <script src=" ...
- 通过JS将BSAE64生成图片并下载
HTML:<div style="display:block;margin:0 auto;width:638px;height:795px;"><div id=& ...
- js实现html转pdf+html2canvas.js截图不全的问题
最近做项目中遇到要把整个页面保存为PDF文件,网上找了一下实现的方法都是 html2canvas.js+jsPdf.js 来实现.实现的过程是 先用html2canvas.js把html页面转成图片, ...
- 使用html2canvas.js实现页面截图并显示或上传
最近写项目有用到html2canvas.js,可以实现页面的截图功能,但遭遇了许多的坑,特此写一篇随笔记录一下. 在使用html2canvas时可能会遇到诸如只能截取可视化界面.截图没有背景色.svg ...
- html2canvas JS截图插件
github/download:https://github.com/niklasvh/html2canvas/releases 参考文章:基于html2canvas实现网页保存为图片及图片清晰度优化 ...
- html2canvas.js 图片不显示
html2canvas.js 图片不显示 在服务器端打开 就可以, 但是在本地就不显示图片. 查找百度,是因为图片不能跨域. 在给非编程人员使用的时候,建议把所有的图片,转化为base64,就可以直接 ...
- html2canvas.js插件截图空白问题
发现使用 html2canvas.js插件截图保存在前端很方便.学习过程中预计问题. 截图出现空白和截图不全. 问题原因: html2canvas.js插件截图是基于body标签的,如果body存在滚 ...
随机推荐
- 精尽Spring Boot源码分析 - 支持外部 Tomcat 容器的实现
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...
- 『无为则无心』Python序列 — 21、Python字典及其常用操作
目录 1.字典的应用场景 2.字典的概念 3.创建字典的语法 4.字典常见操作 (1)字典的增加操作 (2)字典的删除操作 (3)字典的修改 (4)字典的查找 (5)copy()复制 1.字典的应用场 ...
- Linux云计算-02_CentOS Linux 7.X系统管理
Linux系统安装完毕,需要对Linux系统进行管理和维护,让Linux服务器能真正应用于企业中. 本章介绍Linux系统32位与64位区别.内核命名规则.引导原理.启动流程.TCP/IP协议概述.I ...
- 利用ONT测序检测真核生物全基因组甲基化状态
摘要 甲基化在真核生物基因组序列中广泛存在,其中5mC最为普遍,在真核生物基因组中也有发现6mA.捕获基因组中的甲基化状态的常用技术是全基因组甲基化测序(WGBS)和简化甲基化测序(RRBS),而随着 ...
- Linux指令手册 (二)
free free,显示系统中可用内存和已使用内存的数量. 语法:free [options] [target] 参数: -b: 以字节(bytes)显示内存量: -k: 以千字节(kilo)为单位显 ...
- 我用段子讲.NET之依赖注入其二
<我用段子讲.NET之依赖注入其二> "随着我们将业务代码抽象化成接口和实现两部分,这也使得对象生命周期的统一管理成为可能.这就引发了第二个问题,.NET Core中的依赖注入框 ...
- MySql:CentOS7安装mysql后无法启动服务报错,(需要更新yum源)
首先:需要更新你的yum源,保证yum源最新. 1.安装: yum install -y mariadb-server 2.启动maria DB服务: systemctl start mariadb. ...
- springCloud--admin监控使用
Admin监控应用 Spring Boot提供的监控接口,例如:/health./info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态的会话数量.当前应用的并发数.延迟以及 ...
- 6-x1 read命令:从键盘读取数据
1.read的用法 read从 STDIN 读取一行数据并将其赋给一个变量,如果没有进行重定向,默认就是从键盘读取用户输入的数据:如果进行了重定向,那么可以从文件中读取数据. read 命令的用法为: ...
- Nginx PHP测试装
Nginx yum -y install gcc gcc-c++ make automake autoconf pcre pcre-devel zlib zlib-devel openssl open ...