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
随机推荐
- 打印机威胁:嵌入式Web服务有安全问题
现在大多数打印机.扫描仪,以及VoIP系统等设备都会内建嵌入式的Web服务,这主要是为了方便管理.然而不幸的是,这些设备大多会由于设置问题而处在无保护状态下.有些服务甚至可以使用默认的帐号和密码访问, ...
- java的双缓冲技术
Java的强大特性让其在游戏编程和多媒体动画处理方面也毫不逊色.在Java游戏编程和动画编程中最常见的就是对于屏幕闪烁的处理.本文从J2SE的一个再现了屏幕闪烁的Java Appilication简单 ...
- SharePoint2010搜索的简单设置
1. 开启搜索服务,管理中心 – 应用程序管理 – 服务应用程序 – 管理服务器上的服务 2. 点击进去,启动"SharePoint Foundation搜索"."S ...
- ubuntu下无法编译ruby-2.1.5提示something wrong with CFLAGS -arch x86_64
在Mac OS X10.10下以下语句运行没有问题: ./configure -prefix=/Users/apple/src/ruby_src/ruby2.1.5_installed --with- ...
- 布局display属性(一)--【Flex】
一.Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 Flex 布局. .box ...
- 用eclipse怎样将本地的项目打成jar包上传到maven仓库
使用maven的项目中,有时需要把本地的项目打成jar包上传到mevan仓库. 操作如下: 前提:pom文件中配置好远程库的地址,否则会报错 1.将maven 中的settings文件配置好用户名和密 ...
- 学习Spring Boot
Spring boot 是什么 ? 简单说, spring boot 是一个构建项目的工具, 一个脚手架. Spring boot 能干什么? spring boot 做非常少的配置就可以构建生产级别 ...
- Nodejs http-proxy代理实战应用
var https = require('https'); var express = require('express'); var app = express() var http = requi ...
- 在UltraEdit中如何像NotePad++一样实现双击单词在全文中高亮
NotePad++中有个功能特别好用,就是双击某个单词,这个单词就会在全文档中高亮,如下图 我经常用UltraEdit,结果是UE中没有这个功能,这么实用的功能居然没有? 没关系,在UE中shift+ ...
- HTML学习笔记8:表单
什么是表单? 一个网页表单可以将用户输入的数据发送到服务器进行处理.因为互联网用户使用复选框,单选按钮或文本字段填写表格,所以WebForms的形式类似文件或数据库.例如,WebForms ...