知行编程网知行编程网  2022-01-26 12:13 知行编程网 隐藏边栏 |   抢沙发  2 
文章评分 0 次,平均分 0.0

在本文中,我们将实现两个功能:

  • 将所有头像合并为大图
  • 将所有头像以某个模板合成大图

同样,先给上所有运行效果图:

有趣的Python图片制作,用QQ好友头像拼接出里昂

代码实现

1、代码所需库
2、代码讲解

本篇博客就不再讲解如何获取好友头像了,需要的可以参考这篇博文:
https://blog.csdn.net/the_sangzi_home/article/details/105657627

现在,我们已经有了所有的好友头像,接下来我们先实现对所有头像的集合咯

有趣的Python图片制作,用QQ好友头像拼接出里昂

2.1、将小头像合并为大图

对于这个,就是直接将每个小头像贴在大图上就行了,这个利用Image的paste函数就可以解决。对于贴的顺序就可以直接按照下面图示一个个贴:

有趣的Python图片制作,用QQ好友头像拼接出里昂

所以,直接给出代码:

由于好友不多,所以我们每次就随机选择一个好友头像贴上去,所以如果你的密度大的话最后出现的头像有很多重复的头像。

给大家展示下最后我的图片吧:

有趣的Python图片制作,用QQ好友头像拼接出里昂

2.2、以某个图片为模板拼接图片

由于不清楚有没有能够直接做出来的第三方库,所有我就自己造了个小轮子。

思路:
将模板分为A x B的小图,就将它的位置形容为 pic[i][j] 吧,然后获取每个小图的平均RGB值,将 pic[i][j] 的平均RGB值和好友头像的RGB值做对比,找出最接近的头像,然后将该头像插入在图像的 pic[i][j] 处。

思路还是比较简单吧😀

接下来就是实现了:

代码很多地方都给出了注释,我就不多讲了,直接给出代码:

给大家看看最终的效果:

有趣的Python图片制作,用QQ好友头像拼接出里昂
这样一看还是都不错是吧。哈哈。

再给出里昂的模板和最终成果:
有趣的Python图片制作,用QQ好友头像拼接出里昂
有趣的Python图片制作,用QQ好友头像拼接出里昂
添加【修改后的Leon】:
有趣的Python图片制作,用QQ好友头像拼接出里昂

我默认将每个头像以数字命名,可以便于后续的操作。

同时,以上代码都进行了封装,很多函数都可以独立使用,用于满足不同的功能。可以自己读完代码进行改写实现自己需要的功能,比如说以上我默认头像图片都是正方形,你如果图片有长方形的改变下代码也可以满足。

理论上来说,你的好友头像越多,制作出来的图片与模板的差异也就越小。以mode_split这个函数为例,你设置的bigsize越大,你的图片也就越清晰。

以上代码有不足的地方还请大家多多包涵。水平有限,我们,都在努力奔跑~

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享