PC端/移动端html2canvas实现截屏,对图片添加水印文字,最后实现图片导出
2018-01-12 17:17
686 查看
相信有不少人遇到过这种需求:
要求对HTML页面的某个区域实现截屏为图片,以供分享保存。
比如一个DIV中table数据是用户点击,ajax获取,dom操作,js计算等等操作生成的一组数据,这些数据用户有需求保存下来。
如图:
截图效果类似:
需求分析:点击导出结果,实现table投注策略导出
html代码
js图片导出,图片编辑,触发下载保存等
要求对HTML页面的某个区域实现截屏为图片,以供分享保存。
比如一个DIV中table数据是用户点击,ajax获取,dom操作,js计算等等操作生成的一组数据,这些数据用户有需求保存下来。
如图:
截图效果类似:
需求分析:点击导出结果,实现table投注策略导出
html代码
<script type="text/javascript" src="{$Think.LEC_URL}js/html2canvas.min.js"></script> <div class="tabbox"> <table id="plantable"> <tr class="head"> <td nowrap>序号</td> <td nowrap>中否</td> <td nowrap>倍数</td> <td nowrap>当期投</td> <td nowrap>累计投</td> <td nowrap>本期中</td> <td nowrap>本期赚</td> <td nowrap>净赚</td> <td nowrap>下期倍数</td> <td nowrap>余额</td> <td nowrap>累计中</td> </tr> <tbody id='tbody'></tbody> </table> </div> <a id="exportdata" class="ttright bghcolor" onclick="taoge();">导出结果</a> //以下标签为辅助,各有作用 <div id="hidepic" style="display:none;"></div> <div style="display:none;"> <canvas id="myCanvas"> </canvas> </div> <a style="display:none;" class="down" href="" download="downImg.jpg">下载</a>
js图片导出,图片编辑,触发下载保存等
function taoge(){ if($('#tbody').text()==''){ common.tipOpen('请先进行投注策略计算,再进行结果导出!',false,true,2); return false; } $('body').scrollTop(0); //移动端使用:此处可以弥补截图区域过大导致页面有滚动条后,产生的网页截图不完整,不可见区域截取不到 html2canvas(document.querySelector('#plantable'),{ allowTaint:true, height: $("#plantable").outerHeight() + 20 }).then(function(canvas) { $('#hidepic').html(canvas); //生成的原始canvas画布保留以备其他使用 if(common.ismobile()){ //移动端判断 var img = new Image(); var canvas1=document.getElementById("myCanvas"); // 设置宽高 canvas1.width=canvas.width;//注意:没有单位 canvas1.height=canvas.height;//注意:没有单位 var ctx=canvas1.getContext("2d"); if(img.complete) { img.src = canvas.toDataURL(); //由于图片异步加载,一定要等img加载好,再设置src属性 img.onload = function() { // 绘制图片 ctx.drawImage(img,0,0); // 绘制水印 ctx.font="20pt Calibri"; //水印文字添加 ctx.fillStyle = "rgba(0,0,0,0.8)"; ctx.fillText("提示:长按保存投注记录",250,80); ctx.strokeText("提示:长按保存投注记录",250,80); //canvas转换成url,然后利用a标签的download属性,直接下载,绕过上传服务器再下载 document.querySelector(".down").setAttribute('href',canvas1.toDataURL()); $('.down')[0].click(); //a标签触发下载 注意triggle('click')是不能使用的 } } }else{ document.querySelector(".down").setAttribute('href',canvas.toDataURL()); $('.down')[0].click(); } }); }
相关文章推荐
- PHP水印类,支持添加图片、文字、填充颜色区域的实现
- 1.3 实现图片压缩、添加文字或图片水印、指定位置裁剪等功能的ImageUtility(内有效果图) (转)
- asp.net实现图片添加文字及图片水印
- javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印
- php图片添加文字水印实现代码
- 利用php给图片添加文字水印--面向对象与面向过程俩种方法的实现
- 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
- 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
- php实现图片上传时添加文字和图片水印技巧
- JAVA实现图片的修改,添加文字水印效果
- 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
- itext 5.3.0实现对pdf文件添加(文字和图片)水印
- Java代码实现给图片添加文字水印 详细教程一
- javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
- 用Java实现给图片添加文字水印
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
- IOS:手写签名的实现(实现了手势绘制字体,添加文字水印,图片剪切、图片压缩)
- 用Java实现在图片上添加水印图片和水印文字
- java实现给图片添加水印和文字
- Java实现给图片添加图片水印,文字水印及马赛克的方法示例