Uniapp实现微信群聊头像|九宫格合并图片
注意由于微信小程序的安全限制,我们无法直接加载外部图片。因此,在实际应用中,需要先将头像图片下载到本地,然后再将它们加载到画布上。另外,如果头像图片数量不足9张,需要根据实际情况调整九宫格的排列方式。
基本使用
1.创建一个canvas画布,并设置画布的大小和样式。
<template><view class="box"><canvas canvas-id="avatar" style="width:300rpx;height:300rpx" ></canvas></view>
</template>
2.获取所有用户的头像图片地址,并将它们存储在一个数组中
// 头像图片数组const avatarUrls = ['../../static/1.jpg','../../static/2.jpg','../../static/3.jpg','../../static/4.jpg','../../static/5.jpg','../../static/6.jpg','../../static/7.jpg','../../static/8.jpg','../../static/9.jpg',];
3.将头像图片加载到画布上,并按照九宫格的方式排列。可以使用for循环来遍历头像图片数组,并根据每个头像图片的位置计算出它在画布上的坐标
4.将所有头像图片绘制到画布上,并保存为一张新的图片
<script>export default {data() {return {}},onLoad() {},methods: {},mounted() {const ctx = uni.createCanvasContext('avatar', this);// 头像图片数组const avatarUrls = ['../../static/1.jpg','../../static/2.jpg','../../static/3.jpg','../../static/4.jpg','../../static/5.jpg','../../static/6.jpg','../../static/7.jpg','../../static/8.jpg','../../static/9.jpg',];// 计算每个头像图片在画布上的坐标const avatarSize = 100;const padding = 1;//图片之间的边距for (let i = 0; i < avatarUrls.length; i++) {const row = Math.floor(i / 3);const col = i % 3;const x = col * (avatarSize + padding);const y = row * (avatarSize + padding);ctx.drawImage(avatarUrls[i], x, y, avatarSize, avatarSize);}// 将所有头像图片绘制到画布上,并保存为一张新的图片ctx.draw(false, () => {uni.canvasToTempFilePath({canvasId: 'avatar',success: (res) => {console.log(res.tempFilePath);},}, this);});},}
</script>
设置整体圆角
<template><view class="box"><canvas canvas-id="avatar" class="avatar-canvas" ></canvas></view>
</template><script>export default {data() {return {}},onLoad() {},methods: {},mounted() {const ctx = uni.createCanvasContext('avatar', this);// 头像图片数组const avatarUrls = ['../../static/1.jpg','../../static/2.jpg','../../static/3.jpg','../../static/4.jpg','../../static/5.jpg','../../static/6.jpg','../../static/7.jpg','../../static/8.jpg','../../static/9.jpg',];// 计算每个头像图片在画布上的坐标const avatarSize = 100;const padding = 1;//图片之间的边距for (let i = 0; i < avatarUrls.length; i++) {const row = Math.floor(i / 3);const col = i % 3;const x = col * (avatarSize + padding);const y = row * (avatarSize + padding);ctx.drawImage(avatarUrls[i], x, y, avatarSize, avatarSize);}// 将所有头像图片绘制到画布上,并保存为一张新的图片ctx.draw(false, () => {uni.canvasToTempFilePath({canvasId: 'avatar',success: (res) => {console.log(res.tempFilePath);},}, this);});},}
</script><style>.box{width: 300px;height: 300px;border-radius: 50rpx;overflow: hidden;}.avatar-canvas{width: 100%;height: 100%;background-color: #fff;}
</style>
Uniapp实现微信群聊头像|九宫格合并图片相关推荐
- java 头像 微信群_Android仿微信群聊头像
工作中需要实现仿钉钉群头像的一个功能,就是个人的头像拼到一起显示,看了一下市场上的APP好像微信的群聊头像是组合的,QQ的头像不是,别的好像也没有了. 给大家分享一下怎么实现的吧.首先我们先看一下效果 ...
- Android 高仿微信群聊头像
最近小编搞了一个仿微信群聊头像的一个功能,分享给大家... 工作中需要实现仿钉钉群头像的一个功能,就是个人的头像拼到一起显示,看了一下市场上的APP好像微信的群聊头像是组合的,QQ的头像不是,别的好像 ...
- IM群聊头像九宫格实现方式
最近一直在做与IM相关的项目,所以就遇到了群聊头像九宫格的问题. 具体思路: 1:创建ContentView:vi用来显示九宫格头像布局. 2:循环加载头像并添加到vi布局中. 3:在所有头像全部加载 ...
- android微信群聊功能,Android仿微信群聊头像效果
在网上找了些仿微信群聊头像的开源库后,发现没特别好用的,或者说满足我需求的,就只好在别人的基础上改了下,也就有了这样的自定义控件了,以此来实现微信群聊头像的效果,效果图如下所示: 主要实现: 一.自定 ...
- Android 仿微信群聊头像
在网上找了些仿微信群聊头像的开源库后,发现没特别好用的,或者说满足我需求的,就只好在别人的基础上改了下,也就有了这样的自定义控件了,以此来实现微信群聊头像的效果,效果图如下所示: 主要实现: 一.自定 ...
- android 仿微信群聊头像 合成图片
android 仿微信群聊头像 合成图片,微信中可以显示出群头像为多个用户的头像网格,这里讲方法已经封装好, 如果有记得点赞哦!! 先看效果: 使用例子: @Override public void ...
- Android仿微信群聊头像合成
最近碰见仿照微信头像的需求,提供多个url的组合头像,做成微信群聊一样的头像,网上查了下,有两类,一种是合成的,一种是多个view合并展示的,合成的做的感觉很简陋,不太满足需求,多个view拼接的,在 ...
- 仿微信群聊头像(图像合成、缩放)
最近群里面有人问,微信群聊的头像是怎么实现的,就花了半个小时写了一个demo,今天又优化了一下,写个博客分享一下. 先上效果图 原理 原理比较简单,就是用画布(canvas)把九张图片合成一张图,然后 ...
- 环信群列表 php,一行代码实现群聊头像(用环信仿微信群聊头像)
做这个环信群聊头像的时候,我在考虑怎么自定义,怎么去拼接这个群聊头像,怎么获取群成员的头像,怎么在群成员退出群聊的时候更新头像,,, 群聊的东西真的很多,最近刚刚弄完群聊头像,并没有考虑到退出的时候怎 ...
最新文章
- Xtrabackup bug记录
- Ibatis调用Oracle存储过程,以及返回Cursor结果集的问题
- JUC多线程:JMM内存模型与volatile内存语义
- linux驱动基础开发3——linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解-转
- 【论文写作】客户端设计与实现中各模块设计如何写
- tcp socket编程 java_JAVA TCP Socket编程 计算题
- Atitit 面试问题总结
- ipv6无线传感器网络服务器,IPv6传感器网络的应用技术和功能实现分析
- 敏捷 2016:行业分析研讨会
- Mininet系列实验(三):Mininet命令延伸实验扩展
- WindowsPhone8常见问题及使用技巧
- 《互联网周刊》封面报道:P2P——新媒体革命
- 基于LVM的磁盘管理
- [Excel常用函数] sumif sumifs函数
- Win10 22H2 19045.2670系统原版镜像
- 分享一个火狐浏览器firefox的所有版本所有平台所有国家的地址
- 新魔百盒UNT413-905L3B-当贝桌面完美线刷包-各项正常
- 机器学习实战4-教育领域:学生成绩的可视化分析与成绩预测-详细分析
- ps笔刷:肮脏污渍photoshop笔刷集
- 虚拟主机、VPS、云服务器傻傻分不清楚,看这里!
热门文章
- 电子商务在企业应用中的战略地位
- 安全管家安卓_曾经手机不可缺少的第三方安全软件,如今为何却遭“嫌弃”?...
- 怎么让人物脚贴地 模型_造型姿势复制_新手请教怎么把摆好的姿势复制到另一个人物模型上_彩妆阁...
- Java_学习笔记_003(面向对象案例练习)
- EXCEL 回车换行怎么办?ALT+回车
- 拉斯维加斯算法结合回溯法求解n后问题
- 应届生苦恼:是去华为拿1万多低薪,还是去互联网拿2万多高薪?
- Recursion的介绍
- 百度搜索打不开第二页_百度快速排名的最新方法篇
- 德铁“晚点围巾”拍出7550欧元 记录一年晚点情况