uin 小程序 canvas绘制海报保存图片到手机 并适应屏幕

11 篇文章 0 订阅
5 篇文章 0 订阅

uin 小程序 canvas绘制海报保存图片到手机 并适应屏幕

效果图保存前后
在这里插入图片描述在这里插入图片描述
html代码

<canvas canvas-id="myCanvas" class="myCanvas" v-if='list.show==1' @click="list.show2=true"></canvas>
		<!-- 邀请函分享 list.show==1-->
<view class="invite_dolg" v-show="list.show2">
	<view class="invite_dolg_bg">
		<view @click="getImg">
			<image src="../../../static/img/main/prictur.png" mode=""></image>
			<view>保存图片</view>
		</view>
	</view>
</view>

js代码

data() {
		return {
			canvas:{}
		},
mounted(){
			this.getData()	
		},
methods:{
      // canvas生成图片
			getImg(){
				let that=this
				uni.canvasToTempFilePath({
				  x: 0,
				  y: 0,
				  width: this.canvas.width,
				  height: this.canvas.height,
				  canvasId: 'myCanvas',
				  success: function(res) {
					uni.saveImageToPhotosAlbum({
					    filePath: res.tempFilePath,
					    success: function () {
							uni.showToast({
							     title: '已保存成功'
							 });
					    }
					});
				  } 
				})
			},
			//获取标签参数
			getData(){
				let that=this
				uni.getSystemInfo({
				  success: function(res) { // res - 各种参数
				      let info = uni.createSelectorQuery().select(".myCanvas");
				      info.boundingClientRect(function(data) { //data - 各种参数
				          that.canvas=data
						  that.pross( data)
				      }).exec()
				       }
				});
			},
			//绘制
			pross(data){
				const ctx = uni.createCanvasContext('myCanvas')
				//绘制背景色
				ctx.setFillStyle('#ffffff')
				ctx.fillRect(0,0, data.width, data.height)
				//绘制内容
				ctx.setFontSize(14)
				ctx.setTextAlign('center')
				ctx.setTextBaseline('middle')
				ctx.setFillStyle('#c2c2c2')
				ctx.fillText('- 轻备学院 -', (data.width/2), 40)
				ctx.setFillStyle('#FD5656')
				ctx.font = 'normal bold 25px sans-serif';
				ctx.fillText('轻备学院课程邀请函', (data.width/2), 75)
				ctx.font = 'normal normal 14px sans-serif';
				ctx.setFillStyle('#999999')
				ctx.fillText('你的好友正在邀请你加入轻备学院「小学', (data.width/2), 105)
				ctx.fillText('教师资格证」课程学习', (data.width/2), 125)
				//分隔线
				ctx.beginPath()
				ctx.moveTo(0,170)
				ctx.lineTo(600, 170)
				ctx.setStrokeStyle('#f6f6f6')
				ctx.stroke()
				ctx.arc(0, 170, 7, 0, 2 * Math.PI)
				ctx.arc(data.width, 170, 7, 0, 2 * Math.PI)
				ctx.setFillStyle('#FC5F2A')
				ctx.fill()
				//
				ctx.drawImage('../../../static/img/main/none.png', data.width/3, data.width/3+120, data.width/3, data.width/3)
				ctx.setFontSize(14)
				ctx.setFillStyle('#999999')
				ctx.fillText('轻备学院——用心改变学习效率', (data.width/2), (data.height-80))
				//footer#FFE8A4
				ctx.setFillStyle('#FFE8A4')
				ctx.fillRect(0, (data.height-60), data.width, 60)
				ctx.setFillStyle('#999999')
				ctx.setFontSize(20)
				ctx.fillText('微信扫码查看', (data.width/2), (data.height-30))
				ctx.draw()
			},
			
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值