这篇文章主要介绍了移动端Html5页面如何生成图片,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
1。生成图片可以用画布,但是由于已经有了html2canvas这个开源库,所以为了节省时间就没有自己写了
github地址:html2canvas
少啰嗦,先看东西! ! !
LiveDemo
/* * *根据window.devicePixelRatio获取像素比 */函数DPR () { 如果(window.devicePixelRatio,,window.devicePixelRatio祝辞1){ 返回window.devicePixelRatio; } 返回1; }/* * *将传入值转为整数 */函数parseValue(价值){ 回归方法(价值10); };/* * *绘制帆布 */异步函数drawCanvas(选择){//获取想要转换的DOM节点 const dom=document.querySelector(选择); const盒=window.getComputedStyle (dom);//DOM节点计算后宽高 const宽度=parseValue (box.width); const高度=parseValue (box.height);//获取像素比 const scaleBy=DPR ();//创建自定义帆布元素 画布var=document.createElement(& # 39;帆布# 39;);//设定帆布元素属性宽高为DOM节点宽高*像素比 画布。宽度=* scaleBy宽度; 画布。身高=* scaleBy高度;//设定帆布css宽高为DOM节点宽高 canvas.style。宽度宽度=" $ {}px”; canvas.style。身高=${高度}px的;//获取画笔 const上下文=canvas.getContext (& # 39; 2 d # 39;);//将所有绘制内容放大像素比倍 上下文。规模(scaleBy scaleBy); 让x=宽度; 让y=身高; 返回等待html2canvas (dom,{帆布})。然后(函数(){ convertCanvasToImage(画布,x, y) }) }/* * *图片转base64格式 */函数convertCanvasToImage(画布,x, y) { 让图像=新图像(); 让_container=document.getElementsByClassName(& # 39;容器# 39;)[0]; 让_body=document.getElementsByTagName(& # 39;身体# 39;)[0]; 的形象。宽度=x; 的形象。身高=y; 的形象。src=https://www.yisu.com/zixun/canvas.toDataURL(“图像/png”); _body.removeChild (_container); document.body.appendChild(图片); 返回图像; } drawCanvas (.container)
2。由于现在的手机都是高清屏,所以如果你不做处理就会出现模糊的情况,为什么会出现模糊的情况?这个就涉及到设备像素比devicePixelRatio js提供了window.devicePixelRatio可以获取设备像素比
函数DPR () { 如果(window.devicePixelRatio,,window.devicePixelRatio祝辞1){ 返回window.devicePixelRatio; } 返回1; }
这个DPR函数就是获取设备的像素比,那获取像素比之后要做什么呢?
画布var=document.createElement(& # 39;帆布# 39;);//设定帆布元素属性宽高为DOM节点宽高*像素比 画布。宽度=* scaleBy宽度; 画布。身高=* scaleBy高度;//设定帆布css宽高为DOM节点宽高 canvas.style。宽度宽度=" $ {}px”; canvas.style。身高=${高度}px的;//获取画笔 const上下文=canvas.getContext (& # 39; 2 d # 39;);//将所有绘制内容放大像素比倍 上下文。规模(scaleBy scaleBy);
3。获取设备像素比之后将canavs。宽度和画布。高度去乘以设备像素比也就是scaleBy;这个时候在去设置canvas.style。宽度和canvas.style。高度为dom的宽和高。想想为什么要这么写?最后在绘制的饿时候将所绘制的内容放大像素比倍
举个例子iphone6S是设备宽高是375 X 667, 6 s的window.devicePixelRatio=物理像素/下降(2=750/375)所以设计师一般给你的设计稿是不是都是750 * 1334的吗?所以如果按照一比一去绘制在高清屏下就会模糊,看图说话6 s DPR=2
6 + DPR=3
4。最后调用canvas.toDataURL(“图像/png");赋值给形象。src,由于微信里面无法保存图片,所以只能生成图片文件,调用微信自带的长按保存到图片到相册功能,如图:
感谢你能够认真阅读完这篇文章,希望小编分享移动端Html5页面如何生成图片内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!