小程序|公众号
微信首页【下拉】 -> 【搜索】-> “输入国庆头像生成”,可以检索到很多提供国庆头像生成的小程序和公众号服务,直接上传头像生成。
剪映
下载手机版剪映
第一步点击【开始创作】导入头像素材,底部工具找到【调整大小】
调整图像比例为【1:1】,调整好尺寸,点击轨道或图片选择底部的【画中画】创建一个遮罩层
【新增画中画】选择国旗图片并调整尺寸,调整好尺寸工具栏选择【混合模式】,并调整适合的透明度
底部工具选择【蒙版】选择【线性】,然后调整线性蒙版的角度和渐变
程序员方式(使用三方库)
使用 python 三方库 poimage
// python3
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ poimage -U
代码:
// index.py
import poimage
if __name__ == '__main__':
poimage.flag2profile(
profile_path="./WechatIMG58.jpg",
output_path="./output.jpg"
)
使用 PyCharm 点击运行 或者 在终端执行 python3 index.py
本人运行时出现了上面错误,这里贴上错误修复方法:
pip3 uninstall urllib3
pip3 install urllib3==1.26.15
预览效果:
程序员方式(手动调整)
手动添加渐变遮罩
from PIL import Image, ImageDraw
import numpy as np
def create_flag_avatar(flag_path, photo_path, output_path, star_size=66, gradient_factor=2.5):
try:
# 打开图片
flag_img = Image.open(flag_path).convert("RGBA")
photo_img = Image.open(photo_path).convert("RGBA")
# 国旗图片的宽和高
flag_width, flag_height = flag_img.size
# 截出左上角五角星
crop_flag = flag_img.crop((star_size, 0, flag_height, flag_height))
# 创建渐变遮罩
mask = Image.new('L', crop_flag.size)
draw = ImageDraw.Draw(mask)
for i in range(flag_height):
for j in range(flag_height):
distance = int(np.sqrt(i * i + j * j))
alpha = max(255 - int(distance // gradient_factor), 0)
draw.point((i, j), fill=alpha)
# 应用渐变遮罩
crop_flag.putalpha(mask)
# 重置图像尺寸并粘贴
new_crop_flag = crop_flag.resize(photo_img.size)
photo_img.paste(new_crop_flag, (0, 0), new_crop_flag)
# 保存自己的国旗头像
photo_img.save(output_path)
except Exception as e:
print(f"处理图片时发生错误: {str(e)}")
# 使用示例
if __name__ == '__main__':
create_flag_avatar('./WechatIMG57.jpg',
'./WechatIMG58.jpg',
'./半透明国旗头像2.png')
预览效果:
参考
zhuanlan.zhihu.com/p/722211451
本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。