专栏首页云前端用python快速做一个国庆头像

用python快速做一个国庆头像

又到了一年一度的国庆假期七天乐,互联网公司的 IT 小能手们,终于又回到久违的家中,立即变身父母的乖宝、另一半的臭宝,或是小宝们的超级奶妈奶爸;现代社会的节奏就是这样快,彷佛头一天还忙忙碌碌的对需求、过排期、写代码的生活已经恍若隔世一般了。

大部分的人的假期安排其实也不复杂,就是那句能瞬间激活小孩和狗的魔法口令 -- 出去玩!

不管是惬意的郊游、热闹的街头,还是人头攒动的景区,掏出手机咔咔一通的自拍合影是必不可少的了。

这时家里的老人可能会提出一个需求 -- 把自拍或家庭合影的手机照片做成微信头像

随着智能手机和微信在中老年群体中的普及,这样的需求往往是大概率甚至高频的,一个好的微信头像,既能彰显家庭的和睦幸福,也能在国画班、广场舞天团中收获艳羡的目光。

但一个小问题随之产生 -- 微信默认的头像处理界面,只能截取手机照片的一个正方形区域,而无法保留全部图片,这可能造成家庭合影无法完整呈现的问题。

微信默认的头像处理

要是能将手机照片自动放置到一个正方形区域中,并且用颜色相近的模糊效果填充背景,那就好了~

比如下面的照片:

原图

如果做成我们期望的效果,再加个圆形小效果,多好!

期望的效果

如果用 PS 一张张处理图片,一来太麻烦,二来大部分人也搞不来。还好这年头互联网公司中,无论是专业的程序员还是产品经理、运营、测试的同学,好像人人都会写点 SQL 或 Python 啥的,这不就成了嘛~

说干就干,请出懒人小助手 Python 君,用不了几行代码就能达到我们的效果!

新建一个 circle.py 文件:

import os
import re
import sys
from PIL import Image, ImageFilter, ImageDraw, ImageOps

首先引入了一些系统库和 PIL,这是 Python 平台最常用的图片处理工具集,算得上事实上的图像处理标准库了。

但由于 PIL 本身仅支持到 Python 2.7,我们可以直接安装叫做 pillow 的兼容版本,既支持最新的 Python 3.x,又加入了许多新特性,用下面的命令就可以安装了:

pip3 install pillow

然后来声明一个函数:

def make_circle(path, maxS = 600):
    foreImg = Image.open(path)
    if foreImg.mode in ("RGBA", "P"):
        foreImg = foreImg.convert('RGB')
    
    h,w = foreImg.size
    maxSize = max(h, w)
    imgPosi = (int((maxSize - h) / 2), int((maxSize - w) / 2))
    bgBlur = ImageFilter.GaussianBlur(radius=6.18)
    bgSize = (maxSize, maxSize)
    
    backImg = foreImg.copy()
    backImg = backImg.resize(bgSize)
    backImg = backImg.filter(bgBlur)
    backImg.paste(foreImg, imgPosi)
    
    mask = Image.new('L', bgSize, 0)
    draw = ImageDraw.Draw(mask) 
    draw.ellipse((0, 0) + bgSize, fill=255)
    
    backImg = ImageOps.fit(backImg, mask.size, centering=(0.5, 0.5))
    backImg.putalpha(mask)

    if maxSize > maxS:
        backImg = backImg.resize((maxS, maxS))
    
    return backImg

这几行简短的代码比较清晰,基本就是按我们期望的顺序处理了目标路径的图片,相关的 API 查询 pillow 的文档即可,就不过多赘述了。

file_name = sys.argv[1]
save_name = re.sub(r'(jpg|jpeg)$', 'png', file_name.lower())
img = make_circle('./' + file_name)
img.save('./circle_' + save_name)

最后几行是让程序接收命令行传入的文件名参数并执行处理函数的。

只需在终端中执行这样一条命令:

python3 circle.py 1.jpg

就能立即得到一张处理好的头像图片啦,方便又实用!

另外,在视频号“云前端”的系列视频“编程术语古典史”中,涉及希腊神话中众神的头像,也是用这个 Python 函数一键生成的哦,欢迎大家围观转发!

本文分享自微信公众号 - 云前端(fewelife),作者:云前端

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-10-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 国庆,庆祝头像快速生成技能你get到了吗?

    使用python要如何制作呢?我们继续来看。我们需要准备好两张图片,一张是国旗,一张是头像

    大家一起学编程
  • 用 Python 打造别样的国庆祝福

    手动输入祝福,根据汉字库中编码,将祝福语文字以点阵形式打印出来。例如:输入“国庆快乐!”后:

    TTTEED
  • 打开国庆的正确方式,教你用OpenCV-Python轻松生成微信国庆版头像

    相信最近两天大家都被微信头像的国庆版新装刷爆了朋友圈了,不少人都@微信官方,要求换装为国庆版头像,朋友圈也是各种生成链接满天飞。其实这个事情在小编看来没有那么复...

    OpenCV学堂
  • 别再@官方啦,普天同庆加国旗,10行代码搞定

    国庆就要来了!今年是新中国成立70周年,大家的热情都很高涨。这不,我今天一翻朋友圈,被齐刷刷地带国旗的头像给刷屏了!

    Crossin先生
  • Python实现给自己的头像加小月饼或小国旗

    点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上 09:00准时推送,每月不定期赠送技术书籍。

    ITester软件测试小栈
  • 用 Python 给自己的头像加一个小国旗(小月饼)

    今天是国庆节也是中秋节,首先祝大家节日快乐,本文我们使用 Python 来给自己的头像加一个小国旗或小月饼。

    Python小二
  • 你还在@微信官方?我来教你用Python生成你想要的微信头像

    1.给图片加上国旗或者70的logo 2.然后手动换头像 解析:要抠图,在图片指定位置加小图片,好像也比较难

    龙哥
  • 超可爱!快用这个小程序,做个专属「像素风」头像

    每到年底,工作压力总是特别大。如果不想在新的一年继续丧下去,你或许需要一个新的解压神器。

    知晓君
  • 哦豁,一行代码实现头像与国旗的融合

    那么,将一张国旗图片与我们的头像图片,快速得到想要的头像,使用 CSS 如何简单实现呢?

    ConardLi
  • 4年前,他助推微软云平台落地中国;4年后,他成为微软加速器最年轻企业的创始人

    数据猿导读 在微软加速器北京第九期团队中,扩博智能Clobotics不仅是有史以来最年轻的团队,其创始人还曾供职微软16年,担任过微软大中华区副总裁;CTO曾经...

    数据猿
  • 没有扩容机器,抗住了70多倍的流量增长

    登录服务器一看 log,访问量增长的有点厉害啊,疑似 CC 攻击,打开了各种防护,流量还是居高不下...

    黄希彤
  • 国庆了,用照片拼个中国地图吧?

    几天前的给头像加国旗,当时我们 Python 代码来实现时,采用的思路是以头像做背景,向上贴中间透明的带有国旗的头像框图。

    TTTEED
  • 国庆节换头像热潮:国旗渐变微信头像和微信头像加上国旗!制作教程来了,你会了吗???

    明天就是国庆节,再也不用@官方了,自己制作头像更换就可以了。,最近有个五星红旗半透明渐变头像很火,在抖音里、微信群里都流行起来了。

    北京-宏哥
  • 互联网行业常见话术,各有各的南

    点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上 08:30准时推送,每月不定期赠送技术书籍。

    ITester软件测试小栈
  • 李国庆三招图破局,能否扭转被边缘化的当当?

    阿里一家独大,京东拼命追赶,苏美高调触网,垂直电商风生水起已成为电商基本态势,当当网掌门人李国庆已一改往日作风不再频繁更新微博,因为还有更重要的事情在等着他:振...

    罗超频道
  • Pythyon|当中秋遇上国庆

    今天我们祖国迎来了第71个国庆节,与以往不同的是,今年的中秋节也是在今天。所以当中秋遇上国庆后会擦出怎样的火花呢?在小编研究后,发现中秋+国庆=中国结。没错,就...

    算法与编程之美
  • Python头像动漫化,快来生成一个自己的动漫头像吧

    很多时候我们都会为头像发愁,像我这种万年不换头像的咸鱼从来没有这种烦恼。但是吧,有个个性化的头像还是非常有趣的,因为这个抠鼻屎的头像除了抠鼻屎这点,其它都很符合...

    ZackSock
  • 业界 | 聚焦科大讯飞刘庆峰两会建议:呼吁全社会关注人工智能,抢占全球人工智能产业制高点

    机器之心原创 作者:杜夏德 在 2016 年两会中,刘庆峰建议将人工智能作为国家战略性科技发展方向列入科技部的重要工作内容。今年人工智能写进了两会,应了他去年的...

    机器之心
  • 独家 | 林元庆告别百度

    若朴 李根 发自 凹非寺 量子位 出品 | 公众号 QbitAI ? 该来的告别,还是来了。 被吴恩达邀请加入百度两年后,前百度研究院院长林元庆,也选择了离职投...

    量子位

扫码关注云+社区

领取腾讯云代金券