IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 用python快速做一个国庆头像 -> 正文阅读

[人工智能]用python快速做一个国庆头像

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

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

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

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

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

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

微信默认的头像处理

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

比如下面的照片:

91b45492b5348a4581d9886a1149a967.png
原图

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

c55c55fe7e53c180ae4863853a643950.png
期望的效果

如果用 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

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

2b3524b1d0ca774072a828b3695f6d6d.png

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

c982b645aa6a7127e89421c264b23134.png

80cd4ddc4615c8e834b67e99106df43b.png

630c02bd43f409b239c1eb05de4f36ea.png

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:16:59  更:2021-10-09 16:17:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 10:34:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码