今天JiawuLab教大家一个小技能,一秒制作一组心情头像,直接将心情写在头像上,做一个心情都表现在脸上的人。
文 | JiawuLab ,原创作品。
每当注册一个网站或是APP,你最先做的事情,可能就是更换头像,比如微信、QQ、头条、论坛等等。
头像已经成为互联网时代,社交中重要的一部分,好友会通过头像来认识你,也会根据你的头像变化,来判断你这段时间的心情。
但是你有发现吗?经常更换不同的头像,会导致部分好友不认识你,但是有时自己又特别想换个头像,换个心情,该怎么办呢?
为了解决这个问题,心情头像就能很好的满足你的要求。既能更换自己心情,也能让好友还能记住你。
那么如何制作一组自己心仪的心情头像呢?这里会演示一步步的实现过程,请继续阅读。
素材收集
制作心情头像,只需要两样素材:
1、你的头像图片
2、一群心情图标
要求也很简单,保存格式为“PNG”图片即可。
可能你会说,头像图片很容易获得,但心情图标好像很难找,该怎么做呢?
其实只要在电脑上安装过微信或QQ就可以了,本文就以QQ的图标库为例来进行。
上图可看到,在QQ文件夹中的Resources文件夹,(windows系统下位置会略有不同)。
所有的表情包都能在这里看到,你只用挑选出喜欢的表情就可能了,记得选择“PNG”格式哦。
这里我挑选了9张经常会用到的表情包,放在一个名为“moji”的文件夹中,作为本次演示的心情图标。
(后文会涉及一点技术,但过程也很精彩,建议您观看下去。)
技术要点
制作心情头像会用到下面这些技术要点:
1、使用Python的PIL库,来处理头像图片和心情图标,
2、使用递归的方式,对心情图标进行遍历取值(getpixel()方法),
3、再使用putpixel()方法将取到的颜色值写入头像图片,
4、使用save()方法保存,输出心情头像图片,
5、使用“os.listdir()”方法,获取所有心情图标,批量处理。
如果你看不懂这个过程,举个小例子,你就懂了。
小时候学画画,我们会用一张纸放在原画上面,然后用笔临摹出来,上面的技术方法的原理,和这个临摹过程是一样的。
实现过程
1、打开头像图及心情图标,这里注意,PNG格式的图片,打开时需要转换为“RGBA”,否则会有错误。
# 导入PIL库
from PIL import Image
# 打开头像图片
im = Image.open('touxiang.png').convert('RGBA')
# 打开心情图标
im_mo = Image.open('moji/1.png').convert('RGBA')
2、使用递归方式,对图标进行遍历取值(getpixel()方法),再利用putpixel()方法将前面取到的颜色值写入头像图片,然后save()方法保存。
# 选择心情图标的位置
m = im.size[1]-im_mo.size[1]-20
# 获取心情图标的颜色值,再写入头像图片中
for i in range(im_mo.size[0]):
for j in range(im_mo.size[1]):
if im_mo.getpixel((i, j))[:-1] != (0, 0, 0):
im.putpixel((i + m, j + m), im_mo.getpixel((i, j)))
# 使用save()保存,输出心情头像
im.save('pic/1.png')
这里if判断的目的是只将心情图标中有颜色的部分写入头像图片中。
而心情图标会选择贴在头像图片的右下角,且与右边和下边的间隔为“20px”,你可以根据自己需要更改。
3、为了实现一秒生成多张心情头像,需要将上面二步改写为函数,内部代码稍微改动。
# 改写成函数
def mindpic(x):
im = Image.open('touxiang.png').convert('RGBA')
im_mo = Image.open(f'moji/{x}').convert('RGBA')
# 选择心情图标的位置
m = im.size[1] - im_mo.size[1] - 20
for i in range(im_mo.size[0]):
for j in range(im_mo.size[1]):
if im_mo.getpixel((i, j))[:-1] != (0, 0, 0):
im.putpixel((i + m, j + m), im_mo.getpixel((i, j)))
im.save(f'pic1/{x}')
4、使用“os.listdir()”方法获取所有图标文件名,通过循环的方式,传递给函数参数来执行。
import os
# os.listdir()方法获取moji文件夹中所有图标文件名
files = os.listdir('moji')
for f in files:
# 判断后缀是不是png,如果是png,调用mindpic函数
if f[-3:] == 'png':
mindpic(f)
这里做“png”后缀的判断,主要是文件夹中有可能会有其他非图片文件,需要剔除掉,否定代码会出错。
通过上述四步完成后,运行代码,就能一秒生成9张心情头像啦,如下图:
是不是很好玩,只需要将所需要的心情图标放入文件夹中,运行一下程序,就能生成出各种各样的心情头像。
你以后就能根据心情,随时更换自己的头像,让好友们都能看到您此刻的心情。
以上是演示过程,理论上,您放上100张心情图标,最多也就几秒钟的时候就能生成了。
结语
通过上述的演示,您get到心情头像制作的技能点了吗?
这里总结一下重要的点:
1、准备好头像图片及心情图标,
2、使用python的PIL库来进行图片处理,
3、getpixel()、putpixel()、save()方法
4、os.listdir()获取所有图标文件
5、合理使用函数,传参更方便。
希望我的分享,能对您有所收获,您也能自己制作出心仪的心情头像。
如果您喜欢本期的分享,欢迎您在评论区讨论、转发,或者顺手点个赞。谢谢。