74 lines
1.9 KiB
Python
74 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
创建宠物头像占位图片
|
|
"""
|
|
|
|
import os
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
import io
|
|
|
|
def create_avatar_image(text, filename, size=(128, 128)):
|
|
"""
|
|
创建一个带有文字的圆形头像图片
|
|
"""
|
|
# 创建一个新的图像
|
|
img = Image.new('RGB', size, color='lightblue')
|
|
draw = ImageDraw.Draw(img)
|
|
|
|
# 绘制一个圆
|
|
bbox = [(0, 0), size]
|
|
draw.ellipse(bbox, fill='white')
|
|
|
|
# 添加文字
|
|
try:
|
|
# 尝试使用系统字体
|
|
font = ImageFont.truetype("arial.ttf", 40)
|
|
except:
|
|
try:
|
|
# 尝试其他常见字体
|
|
font = ImageFont.truetype("simhei.ttf", 40)
|
|
except:
|
|
# 使用默认字体
|
|
font = ImageFont.load_default()
|
|
|
|
# 计算文字大小和位置
|
|
try:
|
|
bbox = draw.textbbox((0, 0), text, font=font)
|
|
text_width = bbox[2] - bbox[0]
|
|
text_height = bbox[3] - bbox[1]
|
|
except:
|
|
# 如果无法获取文字边界框,使用简单方法
|
|
text_width = text_height = 40
|
|
|
|
x = (size[0] - text_width) // 2
|
|
y = (size[1] - text_height) // 2
|
|
|
|
draw.text((x, y), text, fill='black', font=font)
|
|
|
|
# 保存图片
|
|
img.save(filename)
|
|
|
|
def main():
|
|
# 确保目录存在
|
|
os.makedirs('uploads/1', exist_ok=True)
|
|
|
|
# 创建宠物头像
|
|
avatars = [
|
|
('pet1_avatar.png', '猫1'),
|
|
('pet2_avatar.png', '狗2'),
|
|
('pet3_avatar.png', '猫3'),
|
|
('orange_cat.png', '橘猫'),
|
|
('husky.png', '哈士奇'),
|
|
('ragdoll_cat.png', '布偶'),
|
|
('corgi.png', '柯基')
|
|
]
|
|
|
|
for filename, text in avatars:
|
|
filepath = f'uploads/1/{filename}'
|
|
print(f'Creating {filepath}')
|
|
create_avatar_image(text, filepath)
|
|
|
|
print('All pet avatars created successfully!')
|
|
|
|
if __name__ == '__main__':
|
|
main() |