不到100行代码制作各种证件照
文章图片
文 | 某某白米饭
来源:Python 技术「ID: pythonall」
文章图片
生活中经常需要使用各种版本的电子版证件照,如:红底、蓝底、白底、一寸、两寸等等。在 Python 中替换图片背景色可以用 Image 模块,利用 Image 模块可以改变图片大小、背景色等操作。
文章图片
人像分离
第一步将原图片中的人物与背景分离,我们使用百度 AI 开放平台中的人像分割功能,它的免费版有 50000次/天。使用百度的产品都知道需要一个 SK 和 AK。
文章图片
def get_access_token(self):
"""
获取 access_token
"""
# 注意 SK 与 AK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=ak&client_secret=sk'
response = requests.get(host)
if response:
return response.json()['access_token']def get_foreground(self, originalImagePath, ):
"""
人像分割
"""# 二进制方式打开图片文件
f = open(originalImagePath, 'rb')
img = base64.b64encode(f.read())
params = {"image": img}# 请求 百度 AI 开放平台
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg?access_token=" + get_access_token()
headers = {'content-type': 'application/x-www-form-urlencoded'}
params = {"image": img}
response = requests.post(request_url, data=https://www.it610.com/article/params, headers=headers)if response:
foreground = response.json()['foreground']
img_data = https://www.it610.com/article/base64.b64decode(foreground)
# 人像图片存放地址
foreground_path ='foreground.png'
with open(foreground_path, 'wb') as f:
f.write(img_data)
结果示例
文章图片
创建背景图片
第二步将创建一个底色为红色、蓝色、白色的图片,它的大小为一寸(295px × 413px)和二寸(413px × 579px)。
def get_background():
"""
背景图片
"""
color = ('red', 'blue', 'white')
imgs = []
for c in color:
# 一寸照片大小
img = Image.new("RGBA", (295, 413), c)
imgs.append(img)
return imgs
合并图片
第三步将红蓝白背景图与人像图片合并,这里需要使用 Image 模块的 resize() 将人像图片裁剪到合适的像素,再使用 paste() 方法将图像合并。
def main():
fore = get_foreground('original.jpg')
# 将图像裁剪到合适的像素
p = fore.resize((330, 415))
# 分离图片
r,g,b,a = p.split()imgs = get_background()
for img in imgs:
# 将底色图像和人物图像合并,mask参数为去掉透明背景色
img.paste(p, (-30, 50), mask = a)
img.show()
【不到100行代码制作各种证件照】结果示例
文章图片
结语
使用 Image 模块可以制作我们需要的各种电子版证件照,如果将背景图换成风景图我们就可以在朋友圈旅游了。
PS:公号内回复 :Python,即可进入Python 新手学习交流群,一起100天计划!
老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!
文章图片
文章图片
【代码获取方式】
识别文末二维码,回复:200416
文章图片
推荐阅读
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- 拿着旧地图,找不到新大陆
- 不废话,代码实践带你掌握|不废话,代码实践带你掌握 强缓存、协商缓存!
- 工具|后天就是七夕节,你准备好了吗(送上几个七夕代码,展示你技能的时候到了!)
- 《机器学习实战》高清中文版PDF英文版PDF+源代码下载
- 霍兰德职业代码对照表
- Hexo代码块前后空白行问题
- 前端代码|前端代码 返回顶部 backToTop
- ||11|2019年9月9日
- 11-代码注入