js实现两张图片合成一张图片(canvas绘图,图片合成)
2019-06-17 12:00
603 查看
收到一个需求把一个动态生成的二维码和页面背景图合并在一起供用户保存图片并分享朋友圈是现在邀请好友功能(微信自己的分享很容易被封).把自己遇到需要注意的点,写下来记录一下.
用两张图片的base64进行操作.
绘图代码:
$(function(){ qcodeGenert($("#url").val()); var database=$('#qrcode canvas')[0]; var dataURL = database.toDataURL(); drawAndShareImage(dataURL); }) function drawAndShareImage(imgBase64) { var wid1 = 750 * 0.29;//大 右 var hei1 = 1334 * 0.37;//大 下 var canvas = document.createElement("canvas"); var context = canvas.getContext("2d"); var ratio = getPixelRatio(context); // 关键代码 canvas.width = 750*ratio; canvas.height = 1334*ratio; context.rect(0, 0, canvas.width*ratio, canvas.height*ratio); context.fillStyle = "#fff"; context.fill(); //底图 var myImage = new Image(); myImage.src = src="${pageContext.request.contextPath}/mobileres/${actType}/images/share/share-back11.jpg"; //背景图片 你自己本地的图片或者在线图片 myImage.crossOrigin = 'Anonymous'; myImage.onload = function () { context.drawImage(myImage, 0, 0, 750*ratio, 1334*ratio); //如果是已经生成的Img标签可以直接使用,如果是自定义的则用下面的方法手动设置src var myImage2 = new Image(); myImage2.src = imgBase64; myImage2.onload = function () { context.drawImage(myImage2, wid1*ratio, hei1*ratio, 325*ratio, 345*ratio); var base64 = canvas.toDataURL(); //"image/png" 这里注意一下,参数里面不要带"image/png" 之前网上代码还有这个参数一直报错 var img = document.getElementById('avatar'); img.setAttribute('src', base64); } } } 二维码生成代码: function qcodeGenert(msg){ $("#qrcode").empty(); $("#qrcode").qrcode({ width: 225, height:225, text: msg //url }); } /* 像素密度*/ 如果没这段代码生成的图片可能会模糊,这一块也耽误了很久 function getPixelRatio(context) { var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; return (window.devicePixelRatio || 1) / backingStore; };
相关文章推荐
- js canvas实现5张图片合成一张图片
- 使用canvas来实现两张图片合成一张
- js 将canvas生成图片保存,或直接保存一张图片的实现方法
- PHP将身份证正反面两张照片合成一张图片的代码
- JS简单实现图片上一张下一张操作
- js实现图片上传预览(一张一张上传)
- 实现ipad上的内嵌webview手势缩放图片(修改版,解决在第一张图片放大的情况下翻到下一张图片无法放大的问题) 基于Quo(js库)
- 两张图片合成为一张图片
- ps怎么把两张图片合成一张 图解PS两张图片合成一张的技巧
- js+canvas实现简单绘图
- js实现多张图片每隔一秒换一张图片
- Android:将数字画在图片上合成一张图的两种实现方法(一)
- 在程序中如何把两张图片合成为一张图片
- js实现将canvas保存成图片并下载到本地
- js加canvas实现图片的预览压缩和上传
- php两张图片动态合成thinkphp实现二维码及文字水印合并拼接到背景图上
- js实现每日自动换一张图片的方法
- 原生js实现照片墙的效果(拖拽图片与另一张图片交换位置)
- CANVAS实现图片模糊(处理库StackBlur.js)