<!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生成图片的更多相关文章

  1. html2canvas.js网页截图功能

    需求:将网页生成图片,用户自行长按图片进行保存图片,再分享朋友圈.其中,都可识别图中的二维码.(二维码过小会识别不出) 首先,先来科普一下微信网页识别二维码原理:截屏识别,当客户端发现用户在网页的im ...

  2. html2canvas.js——HTML转Canvas工具

    我们经常会遇上动态生成海报的需求,而在Web前端中,生成图片非Canvas莫属.但是在实际工作当中,为了追求效率,我们会不可避免地去使用一些JS插件,而html2canvas.js就是一款优秀的插件, ...

  3. IText&Html2canvas js截图 绘制 导出PDF

    Html2canvas JS截图 HTML <div id="divPDF"> 需要截图的区域 </div> JS <script src=" ...

  4. 通过JS将BSAE64生成图片并下载

    HTML:<div style="display:block;margin:0 auto;width:638px;height:795px;"><div id=& ...

  5. js实现html转pdf+html2canvas.js截图不全的问题

    最近做项目中遇到要把整个页面保存为PDF文件,网上找了一下实现的方法都是 html2canvas.js+jsPdf.js 来实现.实现的过程是 先用html2canvas.js把html页面转成图片, ...

  6. 使用html2canvas.js实现页面截图并显示或上传

    最近写项目有用到html2canvas.js,可以实现页面的截图功能,但遭遇了许多的坑,特此写一篇随笔记录一下. 在使用html2canvas时可能会遇到诸如只能截取可视化界面.截图没有背景色.svg ...

  7. html2canvas JS截图插件

    github/download:https://github.com/niklasvh/html2canvas/releases 参考文章:基于html2canvas实现网页保存为图片及图片清晰度优化 ...

  8. html2canvas.js 图片不显示

    html2canvas.js 图片不显示 在服务器端打开 就可以, 但是在本地就不显示图片. 查找百度,是因为图片不能跨域. 在给非编程人员使用的时候,建议把所有的图片,转化为base64,就可以直接 ...

  9. html2canvas.js插件截图空白问题

    发现使用 html2canvas.js插件截图保存在前端很方便.学习过程中预计问题. 截图出现空白和截图不全. 问题原因: html2canvas.js插件截图是基于body标签的,如果body存在滚 ...

随机推荐

  1. 性能工具之Jmeter压测Hprose RPC服务

    概述 Hprose(High Performance Remote Object Service Engine),国人开发的一个远程方法调用的开源框架.它是一个先进的轻量级的跨语言跨平台面向对象的高性 ...

  2. http强制缓存、协商缓存、指纹ETag详解

    目录 实操目录及步骤 缓存分类 强制缓存 对比缓存 指纹 Etag 摘要及加密算法 缓存总结 每个浏览器都有一个自己的缓存区,使用缓存区的数据有诸多好处,减少冗余的数据传输,节省网络传输.减少服务器负 ...

  3. python随机漫步

  4. kubernetes的网络代理模式

    在k8s中,如果想ping svc以及ip,发现无法ping通,使用测试环境为k8s 1.6,后来k8s升级到1.12版本,发现ping svc以及ip可以ping通,这里分析一下原因. 后来发现是由 ...

  5. C++ 11 关键字

    1.auto 我现在用auto,基本是在变量定义时根据初始化表达式自动推断该变量的类型. 另外与关键字 decltype 连用,在声明或定义函数时作为函数返回值的占位符. auto不能用来声明函数的返 ...

  6. POJ 3126 Prime Path 简单广搜(BFS)

    题意:一个四位数的质数,每次只能变换一个数字,而且变换后的数也要为质数.给出两个四位数的质数,输出第一个数变换为第二个数的最少步骤. 利用广搜就能很快解决问题了.还有一个要注意的地方,千位要大于0.例 ...

  7. JAVA 类修饰符

    JAVA类的修饰符主要有public,default,protected,private,final,abstract,static 其中外部类中用到的只有public,final,abstract或 ...

  8. final添加内存屏障问题

    看了 why大佬的 博客一个困扰我122天的技术问题,我好像知道答案了. 发现他留了个坑,在变量i类型为 int 或者 Integer 时,int类型的i死循环了而Integer类型的i可以结束 in ...

  9. 从S3中拷贝或同步文件

    p.p1 { margin: 0; font: 16px "Helvetica Neue"; color: rgba(53, 53, 53, 1) } p.p2 { margin: ...

  10. buu SimpleRev

    一.发现是elf文件,拖入ida,然后直接找到了关键函数 点击那个Decry()函数 二.逻辑还是很清晰的,而我是卡在这里v1的逆算法,感觉学到了很多,其实爆破就足够了 这里大小写可以一起写上 tex ...