使用CSS3中Canvas 实现两张图片合成一张图片【常用于合成二维码图片】

本文介绍了如何利用CSS3的Canvas将一张固定图片和一张二维码图片合成为一张新的图片。通过HTML和JavaScript实现图片的绘制,并探讨了html2canvas插件作为替代方案的可能性。
摘要由CSDN通过智能技术生成

CSS3 Canvas 实现两张图片合成一张图片

需求

需求:在项目中遇到将一张固定图片和一张二维码图片合成一张新图片,并且用户能够将图片保存下载到本地。

思路:使用 CSS3 中的 Canvas 将两张图片绘制。

HTML 部分

<div>
  <img id="img1" src="wenbo.jpg" alt="" />
  <img id=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是示例代码实现小程序保存按钮下载图片,并将两张图片合成一张图片下载的功能: ```html <!-- wxml代码 --> <view> <image src="{{image1}}" mode="aspectFill"></image> <image src="{{image2}}" mode="aspectFill"></image> <button bindtap="saveImage">保存图片</button> </view> ``` ```javascript // js代码 Page({ data: { image1: 'image1.jpg', // 第一张图片路径 image2: 'image2.jpg', // 第二张图片路径 }, saveImage: function() { var that = this; wx.showLoading({ title: '正在生成图片...', mask: true }); // 获取第一张图片信息 wx.getImageInfo({ src: that.data.image1, success: function(res1) { // 获取第二张图片信息 wx.getImageInfo({ src: that.data.image2, success: function(res2) { // 创建画布 var ctx = wx.createCanvasContext('canvas'); // 设置画布大小 ctx.canvas.width = res1.width; ctx.canvas.height = res1.height + res2.height; // 绘制第一张图片 ctx.drawImage(that.data.image1, 0, 0, res1.width, res1.height); // 绘制第二张图片 ctx.drawImage(that.data.image2, 0, res1.height, res2.width, res2.height); // 画布转换成图片 ctx.draw(false, function() { wx.canvasToTempFilePath({ canvasId: 'canvas', success: function(res) { // 保存图片 wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: function() { wx.hideLoading(); wx.showToast({ title: '保存成功', icon: 'success', duration: 2000 }); }, fail: function() { wx.hideLoading(); wx.showToast({ title: '保存失败', icon: 'none', duration: 2000 }); } }); }, fail: function() { wx.hideLoading(); wx.showToast({ title: '生成图片失败', icon: 'none', duration: 2000 }); } }); }); } }); } }); } }); ``` 以上代码,我们在页面放置两张图片和一个保存按钮。点击保存按钮后,先通过 `wx.getImageInfo` 方法获取两张图片的信息(包括宽高等),然后创建画布,并设置画布大小为两张图片宽度相同,高度为两张图片高度之和。接着,我们通过 `ctx.drawImage` 方法绘制两张图片到画布上,并将画布转换成图片,最后调用 `wx.saveImageToPhotosAlbum` 方法将图片保存到相册。 需要注意的是,由于获取图片信息和画布转换成图片都是异步操作,因此需要嵌套多个回调函数来保证操作的顺序和正确性。此外,为了能够将画布转换成图片,需要在页面添加一个 `canvas` 标签,并给其指定一个 `canvasId`,这个 `canvasId` 需要在代码使用到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值