主要步骤
获取用户头像
合成
一、获取用户头像
制作自定义头像的第一步就是先选择。在海豚趣图的交互设计中,用户有三种选择的方式:微信头像、本地相册和相机拍摄。获取用户头像的产品设计如下图所示:
1、由于微信官方不再支持通过 wxgetUserInfo 接口来获取用户信息,我们必须通过使用 button 组件并将 open-type 指定为 getUserInfo 类型来获取或展示用户信息。
为优化用户体验,使用 wxgetUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wxgetUserInfo 接口,将无法弹出授权询问框,默认调用失败。正式版暂不受影响。上图中弹出底部菜单的交互方式无法通过 wxshowActionSheet 来实现(因为该接口只能指定字符串文本,不能使用 button, navigator 等组件)。
因此,只能通过自定义 actionSheet 组件来实现以上功能。
mmp-action-sheet 组件
以下是 mmp-action-sheet 组件的代码。
indexwxml
<view hidden="{{!actionShow}}" class="mask {{mask}}" bindtap="actionHide"> <view class="actionSheet animated {{animation}}"><slot></slot>
<button class="close" bindtap="actionHide">{{closeText}}</button>
</view></view>
2、通过 slot 在 action-sheet 中插入自定义的内容,比如 button、navigator 等。
indexwxss
mask{ position: fixed; top: 0; left: 0; width:100%; height: 100%; background: rgba(0, 0, 0, 05); z-index: 999;}actionSheet{ width: 100%; position: absolute; top: 100%; z-index: 1000; overflow: hidden;
}actionSheet button,actionSheet navigator{ color: #000; text-align: center; background: #fff; border-radius: 0; line-height: 35; font-size: 32rpx; border-bottom: 1rpx solid rgb(236, 236, 236); opacity: 1;
}actionSheet button:active,actionSheet navigator:active{ color:#000; background: rgb(236, 236, 236);
}actionSheet button::after,actionSheet navigator::after{ border: none; border-radius: 0;
}actionSheet close{ border-bottom: none; border-bottom: 50rpx solid #fff; border-top: 16rpx solid rgb(236, 236, 236);
}animated { animation-timing-function: ease-out; animation-duration: 02s; animation-fill-mode: both;
}@keyframes fadeInBottom {from{ transform: translate3d(0, 0, 0);
} to { transform: translate3d(0, -100%, 0);
}
}fadeInBottom { animation-name: fadeInBottom;
}@keyframes fadeOutBottom {from{ transform: translate3d(0, -100%, 0);
} to { transform: translate3d(0, 0, 0);
}
}fadeOutBottom { animation-name: fadeOutBottom;
}@keyframes fadeIn {from{ opacity: 0;
} to { opacity: 1;
}
}fadeIn { animation-name: fadeIn;
}@keyframes fadeOut {from{ opacity: 1;
} to { opacity: 0;
}
}fadeOut { animation-name: fadeOut;
}
indexjs
Component({ properties: { actionSheetStatus: { type: Boolean, value: false,observer(newVal) {
if (newVal) {
thissetData({ actionSheetStatus: true, animationMask: 'fadeIn', animationSheet: 'fadeInBottom'
})
} else { thissetData({ actionSheetStatus: false, animationMask: 'fadeOut', animationSheet: 'fadeOutBottom'
})
}
}
}, closeText: { type: String, value: '取消'
}
}, data: { animationMask: 'fadeIn', animationSheet: 'fadeInBottom'
}, methods: {
closeActionSheet() {
thissetData({ animationMask: 'fadeOut', animationSheet: 'fadeOutBottom'
})
setTimeout(() => {
thissetData({actionSheetStatus: false})
}, 300)
}
}
})
组件只有两个参数:
actionSheetStatus 指定组件的初始展示状态,默认为false,表示不显示组件。
closeText 指定关闭按钮的名字,默认为 取消。
indexjson
{ "component": true, "usingComponents": {}}
接下来在页面中调用组件,在组件中插入了3个 button 组件来实现来获取用户头像:
<action-sheet actionSheetStatus="{{actionSheetStatus}}"><button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">使用微信头像</button>
<button bindtap="pickPic" data-source-type="album">使用本地相册</button>
<button bindtap="pickPic" data-source-type="camera">拍照</button>
</action-sheet>
以上我们通过自定义组件 mmp-action-sheet 就解决了原生的 actionsheet 无法指定 button,从而无法获取用户微信头像的问题。
该组件我已经发布到 npm 包,需要用到的同学可以通过 npm 安装,也可以在 github 上查看源码和使用文档。
二、模板
有了原图,接下来我们需要选择模板。如果模板数量不多或者模板变化不频繁,我们可以直接把模板放在本地。鉴于我提供的模板比较多,放在本地会增大小程序源码的大小,我把模板上传到了小程序的云存储中,通过云函数来动态获取模板,方便以后模板扩展。
云函数 tpl 的代码如下:
// 云函数入口文件const cloud = require('wx-server-sdk')cloudinit()// 云函数入口函数exportsmain = async (event, context) => { const wxContext = cloudgetWXContext() // 1 获取数据库引用
const db = clouddatabase() const MAX_LIMIT = 100
// 2 构造查询语句
const countResult = await dbcollection('template')count() const total = countResulttotal // 计算需分几次取
const batchTimes = Mathceil(total / 100) const tasks = [] for (let i = 0; i < batchTimes; i++) { const promise = dbcollection('template')skip(i MAX_LIMIT)limit(MAX_LIMIT)get()
taskspush(promise)
} return (await Promiseall(tasks))reduce((acc, cur) => { return {
data: accdataconcat(curdata),
errMsg: accerrMsg,
}
})
}
页面中调用云函数拉取模板:
getTpl() { const self = this// 调用云函数获取模板
wxcloudcallFunction({
name: 'tpl'
})then(res => {
selfsetData({
templates: resresultdata
})
})
}
三、问题
到这里模板的获取逻辑已经没有问题了,但在开发过程中遇到了一个问题。模板的链接我使用的是云文件ID,当有大量并行加载的时候,只有部分能够显示,我看了一下dom节点其实都已经存在了,image的src的地址也都是正确的。
1、微信官方自230开始已经支持在image中使用云文件ID。云文件ID的格式为: cloud://xxxxxx/templates/01png。我猜测可能是对微信云存储并发请求过多导致的(有知道的同学可以告知),因为我试了一下将云文件ID换成正常的HTTPS的链接是没问题的。
由此可知,可以想到有三种可行的解决方案:
2、将模板存储到外部OSS,使用https协议的链接。
3、使用 wxgetTempFileURL 用云文件 ID 换取真实链接,也就是https形式的链接。
4、控制图的并行加载数量。我的实践是将并行加载数量控制在20,当用户滚动的时候再发起下一次请求。
十二星座的男生谁最帅 第一名:双子座魔魅之帅
经常被女生们关注的帅气双子座,可不是因为他们本身五官多么完美,只是他们多半开朗大方,又有一种女孩子们都喜欢的坏坏的气质在,所以显得有些魔魅的帅气感觉哦。
第二名:狮子座阳刚之帅
总是冷着一张脸对人不怎么热情的狮子座,也是出产帅哥比较多的星座,大概是很多狮子座内在的那种刚毅的男人味,使得他们显得格外迷人,老远看上去就是帅哥一枚。
第三名:天蝎座耀眼之帅
天蝎座是出产男模的多产星座,可想而知一定也涌现出众多的帅哥,因为身材条件非常优秀,即便不是高瘦型往往身材也都特别的出众,所以看上去超级耀眼而且有诱惑力。
头像 男生 12星座之一水瓶座
十二星座男会用什么微信头像 不知道呀,这不准吧,反正我是双子座的,最近喜欢的男生是水瓶座的,之前喜欢的男生是双子座的,天秤座也喜欢过,座的也有,天蝎座也有,超花心
十二星座头像一整套 啊对
有没有像这样的十二星座头像 imgtom61/88jpg
长颜草头像十二星座 星座是按阳历(公历)日期划分的,首先你得知道你的阳历出生日期,然后对照下面的资料。
白羊座:3月21日~4月20日
金牛座:4月21日~5月21日
双子座:5月22日~6月21日
巨蟹座:6月22日~7月22日
狮子座:7月23日~8月23日
处女座:8月24日~9月23日
天秤座:9月24日~10月23日
天蝎座:10月24日~11月22日
射手座:11月23日~12月21日
魔羯座:12月22日~1月20日
水瓶座:1月21日~2月19日
双鱼座:2月20日~3月20日
上面是12星座日期查询表,对照表格便可知道自己所属星座。
12星座分别喜欢什么qq头像 白羊,射手,双子,水瓶大多喜欢很美丽的头像,像是帅哥靓妹之类的,当然,不排斥个别的会用自己喜爱的演员,角色,动漫,游戏人物做头像,天枰,摩羯,天蝎,这几个星座会喜欢神秘,优雅,高贵一些的头像,也有一些会选自己心仪的人物头像,但一般会钟情一种颜色,金牛,狮子,会选看上去复杂,辉煌,古典的头像,但金牛偶尔会选择静物,毕竟牛牛是一种骨子里漠然而脱俗的星座,狮子呢更倾向于霸气,酷一些的。双鱼座的头像大多寄托着他的梦幻,但一般都很唯美,这一点巨蟹也相同,他们都会挑一些有意境的头像,至于处女・・・・・・不好说・・・・・・这个龟毛的星座应该会认认真真的挑选一个无懈可击的美美的头像。
望请采纳。
12星座的女生头像
带“十二星座”四字的QQ头像 把要加字的图发过来
十二星座适合的头像挂件 十二星座迥异的性格特点也决定着他们各自的兴趣爱好,有的喜欢简单,有的喜欢热情,有的喜欢复杂多变,还有的喜欢个性凸显。你的性格又是怎么样呢?你会喜欢什么风格的小饰品?什么样的幸运手链能够讨你喜欢呢?假如最近的你正好想挑选一款合适的手链,那么就不要错过下面的内容了。
我身边那些头像放动物头像的人都是很可爱的。
性格应该比较开朗的!
不过有时候也没什么意义,单纯觉得照片好看适合做头像就用了!
从微信头像看人的性格
1用没太刻意选择过的生活照作头像
这类人对自己的接纳度比较高,对外貌也比较有自信,不一定长得好看,但是能接纳自己的本来面目。内心没藏太多秘密,也没做过什么见不得人的事儿,在网络世界和现实世界中差别不大。
2用端端正正的证件照作头像
为人中规中矩,不敢越雷池一步,其实内心很压抑。
3用自己PS过的照片、艺术照、文艺范儿照、装可爱照作头像
往往有较强的自我中心倾向,就是有点自恋啦!其实自恋的外表透露出自卑的内心,不太能接受真实的自己。
4用又远又小的人像作头像
注重隐私,害羞保守,防卫心较强,不易接近陌生人,基本上不太可能与人自来熟。
5用部分脸的超级特写作头像
自我感很强。其实很想被人认出来,在用伪艺术的形式来遮掩内心的真正渴望。
6用童年照片作头像
总觉得过去的事物比现在美好,容易伤感,不易改变。巨蟹座偏多。
巨蟹座性格温柔善良,对待他人非常友好,而且喜欢分享和理解;他们会给人一种非常温暖的感觉,而且很善良。你会发现他们对生活中的一切都是充满希望、积极乐观的态度。但因为太过于在乎别人而忽略了自己,就会有一些不快乐的事情出现,但是却不知道如何去解决和处理。如果你想让他们重新认识你,那就从了解你开始吧。巨蟹座喜欢家庭和温馨舒适的感觉,是一个很好相处又很温柔善良的星座。
1、巨蟹座性格上有一种比较成熟的魅力,而且他们不会把自己的心思隐藏起来,只是希望在外人面前展现出来,所以你要记住这一点。
但他们并不是一个完全成熟的人,可能会给人一种比较冷漠、不近人情的感觉。但是也不排除有些人可能只是喜欢,但并没有太深的喜欢。你也可以在这段感情中做一些积极乐观的事情,使对方对你有兴趣。两个人一旦建立起联系后,会非常注重生活,他们希望能够一直保持着那种家庭的温暖。但他们也需要照顾另一半的感受,所以就会变得更加努力。
2、巨蟹座是一个心思比较细腻的星座,他们有自己独特的处事方法;
但是他们并不会表现得像一个人那样,很爱和别人讲道理。因为他们也有自己的小秘密,需要被疼爱。虽然巨蟹座是一个非常温柔善良,非常体贴的星座。但是有时候也会给人一种冷淡和无情的感觉。因为他们不希望别人去了解自己。
3、巨蟹座会用情感去引导别人,并且他们会帮助别人解决一些困难。
巨蟹座给人一种温文尔雅和蔼可亲的感觉,所以他们最擅长做做善事。但是他有一个缺点,就是太过在乎别人,甚至让别人觉得自己是在帮助他,其实对别人来说不过是在做一个无用功和浪费时间的事情!但是他们很擅长和别人沟通,而且如果他们有什么问题的话,他们会及时地向别人求助。因此我们要学会与巨蟹座相处。如果你们之间存在一些矛盾的话,你就可以通过沟通来解决这个问题!
4、一旦陷入爱情也就很难抽离出来,但巨蟹可以给对方一定的安全感。
他们喜欢家人和朋友,这可以让伴侣有安全感,也可以在感情中感到很幸福。对巨蟹来说,感情里最重要的是一个尊重和理解,如果对方不能尊重和理解你的想法和态度,那他就做不到了。只有尊重、理解才能真正帮助到对方,而只有对方和你真心相爱,那么他们才有可能真正感受到爱。巨蟹座是一个追求自由和独立的星座。他们不想让爱情变成一场婚姻,而是想成为自己人生的主导者,在这方面巨蟹非常明确而坚定地做着这样的决定。这种坚定意味着巨蟹想成为自己人生中最重要的那个人而努力奋斗。
欢迎分享,转载请注明来源:表白网
评论列表(0条)