uniapp 微信小程序 动态生成海报分享朋友圈,需先保存图片

这篇具有很好参考价值的文章主要介绍了uniapp 微信小程序 动态生成海报分享朋友圈,需先保存图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

直接拷贝代码,不使用插件,自己纯代码实现。
从相册 或拍照 选择一个图片做海报背景。
大吉大利 今晚吃鸡。


<template>
	<view>
        
		<view style="margin-left: 20rpx;">
			<canvas canvas-id="posterCanvas" class="myCanvas"
				style="background-color: #FFFFFF;width:710rpx;height:100vh;"></canvas>
		</view>
         
		<view style="position: fixed;bottom: 90rpx;margin-left: 30rpx;">
			<button type="primary" @click="goto()">拍照</button>
		</view>
	</view>
</template>

<script>
	 
	export default {
		data() {
			return {
				src: ",
				erQured:"../../static/img/erweima.png",
				mzl:10,
				jqs:1,
				tqs:101,
			}
		},
		onLoad() { 
		},
		methods: {
			goto() {
				uni.chooseImage({
					count: 1, //默认9
					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
					sourceType: ['camera'], //从相册选择
					success: (res) => {
						console.log(JSON.stringify(res.tempFilePaths));
						console.log(res.tempFilePaths[0]);
						console.log(this);
						this.src = res.tempFilePaths[0];
						console.log(this.src); 
						this.drawImage();
						this.getAlbum();
					}
				});
			},
			drawImage() {
				//微信小程序  画布宽带375
				var _that = this
				const ctx = uni.createCanvasContext("posterCanvas", this); 
				//背景色
				ctx.fillStyle = '#FFFFFF';
				ctx.fillRect(0, 0, 375 , 800 );
				// image
				ctx.drawImage(_that.src, 0 , 0 , 375 , 800 );
				ctx.save();
 
				ctx.globalAlpha = 0.5;
				ctx.fillStyle = '#000000';
				ctx.fillRect(10, 380, 90, 25);
				//商品名称
				ctx.setFillStyle("#fff");
				ctx.setFontSize(20); 
				ctx.fillText("进球数:"+_that.jqs, 10 , 400 );
				
				ctx.globalAlpha = 0.5;
				ctx.fillStyle = '#000000';
				ctx.fillRect(137, 380, 100, 25);
				//商品名称
				ctx.setFillStyle("#fff");
				ctx.setFontSize(20); 
				ctx.fillText("投球数:"+_that.tqs, 137 , 400 );
				
				ctx.globalAlpha = 0.5;
				ctx.fillStyle = '#000000';
				ctx.fillRect(260, 380, 110, 25);
				//商品价格
				ctx.setFillStyle("#fff");
				ctx.setFontSize(20 );
				// ctx.setTextAlign("bottom"); 
				ctx.fillText("命中率:"+_that.mzl+"%", 260 , 400); 
				ctx.globalAlpha = 1;
				//识别二维码访问
				ctx.fillText('长按识别二维码', 37 , 450 );
				ctx.drawImage(_that.erQured, 220 , 370 , 100 , 100 );
				ctx.save();
				ctx.draw()
				wx.hideLoading();
			},
			//获取画布,需要延时进行,否则获取到的画布为空 
			getCanves() {
				var _that = this
				setTimeout(() => {
					wx.canvasToTempFilePath({
						canvasId: 'posterCanvas',
						success: function(res) {
							_that.savePoster(res.tempFilePath)
						},
						fail: function(res) {
							console.log(res.errMsg)
						}
					}, this)
				}, 1000)
			},
			//将获取到的画布传值进行保存
			savePoster(shareImagePath) {
				var that = this
				setTimeout(() => {
					wx.saveImageToPhotosAlbum({
						filePath: shareImagePath,
						success(res) {
							wx.showToast({
								title: '保存成功',
								icon: 'none'
							})
							setTimeout(() => {
								wx.hideLoading()
								that.$emit('fatherMethod', false)
							}, 300)
						},
						fail() {
							wx.showToast({
								title: '保存失败,请刷新页面重试',
								icon: 'none'
							})
							setTimeout(() => {
								wx.hideLoading()
							}, 300)
						}
					})
				}, 500)
			},
			//在保存之前先判断用户是否授权
			getAlbum() {
				var that = this;
				wx.showLoading({
					title: '正在保存...',
					mask: true
				})
				wx.getSetting({
					success(res) {
						if (res.authSetting["scope.writePhotosAlbum"]) {
							that.getCanves();
						} else if (res.authSetting["scope.writePhotosAlbum"] === undefined) {
							wx.authorize({
								scope: "scope.writePhotosAlbum",
								success() {
									that.getCanves();
								},
								fail() {
									wx.hideLoading();
									wx.showToast({
										title: "您没有授权,无法保存到相册",
										icon: "none"
									});
								}
							});
						} else {
							wx.openSetting({
								success(res) {
									if (res.authSetting["scope.writePhotosAlbum"]) {
										that.getCanves();
									} else {
										wx.showToast({
											title: "您没有授权,无法保存到相册",
											icon: "none"
										});
									}
								}
							});
						}
					},
					fail: err => {
						wx.hideLoading();
						wx.showToast({
							title: "出现了错误,请稍后再试",
							icon: "none"
						});
					}
				});
			},
		}
	}
</script>

<style lang="less" scoped>
	page {
		background-color: white;
	}
</style>

uniapp 微信小程序 动态生成海报分享朋友圈,需先保存图片文章来源地址https://www.toymoban.com/news/detail-511743.html

到了这里,关于uniapp 微信小程序 动态生成海报分享朋友圈,需先保存图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp 微信小程序分享、分享朋友圈功能

    页内自定义分享按钮 当页面js上没有添加事件“onShareAppMessage”,右上角‘…’不会出现“转发”事件。 如果有事件,但是没有定义事件内容的话,转发的卡片则是当前页面的截屏信息。 官方文档:https://uniapp.dcloud.io/api/plugins/share?id=onshareappmessage 方式1:小程序右上角原生菜

    2024年02月16日
    浏览(62)
  • 微信小程序实现生成分享海报案例

    一、引入插件painter (1)克隆地址:https://gitcode.net/mirrors/Kujiale-Mobile/Painter (2)下载的 painter 放到小程序的 components 目录下 二、页面中引入插件 (1)页面的 json 文件 (2)页面的 wxml 文件 其中 painter 插件可以获取绘制出来的图片路径, image 标签展示出来 三、绘制海报 1、

    2024年02月08日
    浏览(95)
  • 【uniapp】微信小程序分享到聊天,朋友圈

    ​​​​​manifest.json的app模块配置开启Share微信分享,填入appId。  2.示例  3.界面分享按钮:button open-type=\\\"share\\\"分享/button

    2024年02月14日
    浏览(62)
  • 微信小程序 api+前端实现生成分享海报

    1.先看效果图,点击分享海报按钮,然后弹出分享海报  2.前端代码 这里用的组件有vant组件库还有canvas_drawer(一个画布组件) canvas_drawer下载地址 https://github.com/kuckboy1994/mp_canvas_drawer 把 components 中的 canvasdrawer 拷贝到自己项目下,然后再app.json中引用就行了,如下 \\\"usingCompon

    2024年02月09日
    浏览(50)
  • 微信小程序生成二维码海报并分享

    背景:点击图标,生成海报后,点击保存相册,可以保存 生成海报:插件wxa-plugin-canvas,此处使用页面异步生成组件方式,官网地址:wxa-plugin-canvas - npm 二维码:调用后端接口生成二维码 需要调用获取图片信息接口wx.getImageInfo(),获取到图片的宽高以做整体宽高配置 closePos

    2024年03月21日
    浏览(80)
  • uniapp 微信小程序中实现“发送给朋友”和“分享到朋友圈”

    先新建一个js文件,内容如下: 在main.js中引入 完成上面两步后,每个页面都会有分享按钮了,在页面的 data 里面可以单独设置参数了 效果图如下

    2024年03月10日
    浏览(76)
  • 微信小程序使用canvas生成分享海报功能复盘

    近期需要开发一个微信小程序生成海报分享的功能。在h5一般都会直接采用 html2canvas 或者 dom2image 之类的库直接处理。但是由于小程序不具备传统意义的dom元素,所以也没有办法采用此类工具。 所以就只能一笔一笔的用 canvas 画出来了,下面对实现这个功能中遇到的问题做一

    2024年02月16日
    浏览(73)
  • uniapp-微信小程序分享给好友和朋友圈功能

    只需要在要分享的页面中设置 onShareAppMessage 即可 只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮 监听用户点击页面内转发按钮(button 组件  open-type=\\\"share\\\" ) 或者右上角菜单“转发”按钮的行为,并自定义转发内容 具体代码如下  onShareAppMessage如果带了参

    2024年02月03日
    浏览(68)
  • uniapp实现微信小程序全局【发送给朋友】、【分享到朋友圈】、【复制链接】

    一、在开发微信小程序的时候,发现【发送给朋友】、【分享到朋友圈】、【复制链接】功能,灰色不可用。 很常见的功能,但是这几个功能,并不是你项目建起来了就有的。 1.【发送给朋友】使用 onShareAppMessage 这个方法 如果你的小程序,发现他的【转发给朋友】的按钮时

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包