元旦C位出道,用微信好友头像拼个中国地图吧!

简介: 准备用好友头像拼接成背景图,用中间透明的中国地图加以覆盖,即可生成一个酷炫的照片地图。

几天前中秋节的时候用微信好友头像加生成祝福文字,当时用 Python 代码来实现时,采用的思路结合微信好友头像和点阵字,弄成头像拼字。


   马上就元旦了,我们把素材换一下,搞一个新玩法:准备用好友头像拼接成背景图,用中间透明的中国地图加以覆盖,即可生成一个酷炫的照片地图。

话不多说,效果如下:

image.png

图片展示原因,未能显示岛屿等细节)


整体思路是这样婶儿的

  • 获取所有微信好友头像
  • 准备一张透明的中国地图
  • 把微信好友头像作成照片墙
  • 黏合照片墙和透明地图即可


获取好友头像

   这个我在之前用微信好友头像生成汉字时已经做好了、直接拿过来用即可。

   如果你不知道怎么获取微信好友头像、请移步到下面:里面有详细的获取微信好友头像的说明。

用微信好友头像生成祝福文字,你就是朋友圈最靓的仔


准备中国地图轮廓素材

   原理比较简单,实现起来也不复杂,最最重要的是获取中间透明的地图轮廓图片。我们直接在网上下载一个中国轮廓透明地图:

ChinaMap.png

(图片展示原因,未能显示岛屿等细节)


拼接图片墙

   我们用微信好友头像拼接成一张大的图片墙,如果你愿意也可以自己PS一下。

image.png


   不过我们这里用Python里面的 PIL 图片处理模块来操作,主要是将小图拼接成与地图轮廓图同等大小的背景图(图片墙):

代码如下:

defcombine_pic(folder,unit_size):
"""用图片生成一张地图大小的照片墙    """# 读取地图轮廓图img=Image.open("ChinaMap.png")
w,h=img.size#新建与主图一样大的白色底图new_img=Image.new('RGB',(w,h),'#FFFFFF')
#根据小格尺寸,计算大图可容纳小图数量y_index=h//unit_sizex_index=w//unit_sizepic_list= []
foriteminos.listdir(folder):
#对文件夹中的 jpg 图片格式筛选ifitem.endswith(".jpg") oritem.endswith(".jpeg") :
pic_list.append(item)
#获取素材图片数目total=len(pic_list)
x=0y=0foriinrange(x_index*y_index):
#打印当前进度print(f"当前进度{i}/{x_index*y_index}")
try:
# 对素材图缩放至小格大小test=Image.open(f"{folder}/"+pic_list[i%total]).resize((unit_size,unit_size), Image.ANTIALIAS)
exceptIOError:
print("图片读取失败,跳过该图片")  # 图片会读取失败continue#将缩放成小格的素材图按顺序贴到白色底图上new_img.paste(test,(x*unit_size,y*unit_size))
x+=1ifx==x_index:
x=0y+=1print("照片墙合成完毕")
#保存照片墙new_img.save("PhotoWall.jpg",quality=100)
paste_map() #调用地图合成函数


地图轮廓贴图

   到目前为止我们就有了2张图片,一张透明的中国地图,以及一张用微信好友头像拼接的图片墙。

   有了图片墙以及要覆盖在上面的地图轮廓图,只要将轮廓图贴在图片墙上即可收工。

代码如下:

defpaste_map():
"""用透明地图覆盖头像图片    """#读取合成后的素材图src1=Image.open("PhotoWall.jpg")
#读取地图轮廓图src2=Image.open("ChinaMap.png")
src1.paste(src2,(0,0),src2)
savename="result{}.png".format(unit_size)
src1.save(savename)
print("头像地图制作完毕!")
os.system('pause')  #手动退出提示

image.png

(图片展示原因,未能显示岛屿等细节)


整体流程只需要4个步骤;

  • 准备好图片(微信好友头像)
  • 用图片生成一张图片墙
  • 准备一张透明的地图
  • 将图片墙和地图整合


完整代码:


https://github.com/huaisha1224/Python-Example



注意事项


  • 由于图片墙和地图黏合时多出来的部分会被透明处理,所以会看不到
  • 生成图片墙的时候请根据头像数量多尝试小图大小

目录
相关文章
|
设计模式 Java uml
微信和QQ这么多群,该如何管理好友关系?
在现实生活中,中介者的存在是不可缺少的,如果没有了中介者,我们就不能与远方的朋友进行交流。各个同事对象将会相互进行引用,如果每个对象都与多个对象进行交互,则会形成如下图所示的网状结构。
123 1
|
25天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
36 7
|
5月前
|
存储 小程序 API
【微信小程序-原生开发+云开发+TDesign】修改用户头像(含wx.chooseMedia,wx.cloud.uploadFile,wx.cloud.deleteFile的使用)
【微信小程序-原生开发+云开发+TDesign】修改用户头像(含wx.chooseMedia,wx.cloud.uploadFile,wx.cloud.deleteFile的使用)
92 0
【微信小程序-原生开发+云开发+TDesign】修改用户头像(含wx.chooseMedia,wx.cloud.uploadFile,wx.cloud.deleteFile的使用)
|
5月前
|
小程序 JavaScript 安全
【微信小程序-原生开发】转发给好友/群,分享到朋友圈(含单页模式访问云开发数据库的方法)
【微信小程序-原生开发】转发给好友/群,分享到朋友圈(含单页模式访问云开发数据库的方法)
213 0
|
5月前
|
小程序
【微信小程序-原生开发】TDesign 实战模板——带性别图标的头像
【微信小程序-原生开发】TDesign 实战模板——带性别图标的头像
78 0
|
5月前
|
小程序 数据库 C++
【微信小程序-原生开发】实用教程17 - 详情页触发列表页刷新,点击图片放大预览,转发给好友/群,分享到朋友圈
【微信小程序-原生开发】实用教程17 - 详情页触发列表页刷新,点击图片放大预览,转发给好友/群,分享到朋友圈
48 0
|
5月前
|
缓存 容器
Flutter实现仿微信群头像功能
Flutter实现仿微信群头像功能
79 0
|
6月前
|
API 开发工具
企业微信SDK接口API调用-触发推送企业微信微信好友
企业微信SDK接口API调用-触发推送企业微信微信好友
|
6月前
微信小游戏全局开启好友和朋友圈分享功能
微信小游戏全局开启好友和朋友圈分享功能
65 0
|
6月前
|
API 开发工具
企业微信api接口调用-通过手机号或微信好友添加客户
企业微信api接口调用-通过手机号或微信好友添加客户