js实现html截图生成图片
没有华丽的开场,直入主题,这就是题主随笔风格。随笔既是日常工作积累,也可理解是个工作笔记,方便日后用到之处快速的有方可寻。
先讲一个需求场景: 定制网页截图传给服务器端保存,用户关注公众号后自动回复该截图。
想必js实现网页截图,大家第一思路是将网页转成canvas再由canvas转成base64图片。没错,我的思路也是这样,在实际开发过程中各种试错、调研也验证了该方案是最佳最便利的html转图片的方案(肯定是!没有之一)。那么方案确定后,大体的实现思路也就可以往该方向去做了。由于开发时间有限,这里我们就不自己手写html2canvas的过程了,最快的速度当然是找现成的插件,经过插件之间的对比,不是样式丢失就是图片丢失,算什么截屏啊?
这里给大家推荐一个我用了还不错的插件:html2canvas.js github链接:https://github.com/niklasvh/html2canvas
关键代码:
<!--引入html2canvas库-->
<script src="game/js/html2canvas.min.js"></script>
<script>
html2canvas(document.body).then(function(canvas) {
var base64 = canvas.toDataURL("image/png");
console.log(base64 );//生成本地base64图片
});
</script>
当然,以上还不算个完整的demo!可能有部分朋友会发现截图不完整或者报跨域的错
这是因为你页面中本地案例的图片或者其他网络图片和你当前项目不在一个域名下,那怎么解决呢?把网络图片或者不在同一域名下的图片转成base64本地图片,再进行截图。
具体方法如下:
<script>
function Image2Base64(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
var dataURL = canvas.toDataURL("image/png");
return dataURL
}
</script>
js实现html截图生成图片的更多相关文章
- 利用JavaScript将页面截图生成图片传给后台的插件:html2canvas
利用JavaScript将页面截图生成图片传给后台的插件:html2canvas 一.总结 一句话总结: 10 <script type="text/javascript"& ...
- js依赖mui.css生成图片验证码
js依赖mui.css生成图片验证码 相关css和js引入路径 https://cdnjs.cloudflare.com/ajax/libs/mui/3.7.1/css/mui.css https:/ ...
- 使用html2canvas.js实现页面截图并显示或上传
最近写项目有用到html2canvas.js,可以实现页面的截图功能,但遭遇了许多的坑,特此写一篇随笔记录一下. 在使用html2canvas时可能会遇到诸如只能截取可视化界面.截图没有背景色.svg ...
- 移动端js模拟截屏生成图片并下载功能的实现方案
一.根据PM需求如下: 移动端wap 实现将二维码生成图片下载至用户手机相册保存 二.根据现有思路: 1.使用第三方工具html2canvas,将页面中指定范围的dom转换为canvas 2.随后使用 ...
- js实现视频截图,视频批量截图,canvas实现
截取视频的某一时间的图像并保存 利用canvas的绘画能力画出视频某一帧的视频画面, 获得到图像之后转换成base64图像, 再利用a标签的实现自动保存到本地 html代码 <!DOCTYPE ...
- three.js canvas内场景生成图片 canvas生成图片
第一种最简单的方法: 1 threeBox.render();//重点 解决拿到图片后为黑色 2 3 let src=threeBox.renderer.domElement.toDataURL(); ...
- 如何更改OS系统下截图生成图片格式 jpg pdf
Mac系统下快速截屏的快捷键: 1.截全屏: shift + command + 3 2.选取截屏 shift + command + 4 生成的图片,系统默认格式忘了,反正不好用,用下面命令更改生成 ...
- js获取视频截图
参考:https://segmentfault.com/q/1010000006717959问题:a.获取的好像是第一帧的图?第一帧为透明图时,获取的个透明图片b.得先加载视频到video,做视频上传 ...
- js能否实现截图,截图之后的图片数据再下载到本地?
https://www.zhihu.com/question/20763177 http://www.cnblogs.com/yanweidie/p/5203943.html
随机推荐
- OpenCV——颜色运算(二)
#ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <iostream> #include & ...
- objective-c随机数+日期格式显示一例
在原来的代码上有修改,主要为: 将准备随机数方法放到了init中,这样不用手动调用了 setWeek方法已经过时,使用的是setWeekOfYear方法 在此放一份以备以后查找: le.h // // ...
- jsp标签jsp:setProperty用法
<jsp:setProperty>用来设置已经实例化的Bean对象的属性 第一种形式: <jps:setProperty name = "JavaBean实例名" ...
- rails将类常量重构到数据库对应的表中之一
问题是这样:原来代码.html.erb页面中有一个select元素,其每个item对应的是model中的类常量: <%= f.select :pay_type,Order::PAYMENT_TY ...
- Python_让人脑阔疼的编码问题(转)+(整理)
我们要知道python内部使用的是unicode编码,而外部却要面对千奇百怪的各种编码,比如作为中国程序经常要面对的gbk,gb2312,utf8等,那这些编码是怎么转换成内部的unicode呢? 首 ...
- 排序算法入门之冒泡排序及其优化(java实现)
冒泡排序思想(从小到大): 比较相邻两个元素,如果第一个元素比第二个元素大,就交换他们的位置.第一趟,从第一个元素开始,第一个元素和第二个元素比较,如果第一个元素比第二个元素大,则交换位置:接下来比较 ...
- HTML DOM 访问2
getElementsByTagName() 方法 getElementsByTagName() 返回带有指定标签名的所有元素. x=document.getElementById("mai ...
- tomcat6 高并发配置 与优化
server.xml配置 1. <Connectorport="8080"protocol="HTTP/1.1" 2. maxThreads=&quo ...
- Python字符串全解
1.字符串大小写转换 def strChange(): str = "niuXinLong@163.com" print("原字符串:" + str) prin ...
- memcached command
http://lzone.de/cheat-sheet/memcached memcached Cheat Sheet Telnet Interface How To Connect Use &quo ...