
中秋想给家人、朋友、客户发张贺卡,去网上找图库模板,要么收费要么带水印,发出去"撞款"概率高。自己用 Python 画一张也不复杂:深蓝夜空 + 一轮圆月 + 祝福文字,名字自动填进去,每张都不一样。
下面是 Pillow(PIL)从零画一张贺卡的完整代码。
01 · CHAPTER ONE
装库
Pillow 是 Python 处理图片最常用的库:
bash
pip install Pillow
02 · CHAPTER TWO
完整代码:一张卡,自动填名字
python
from PIL import Image, ImageDraw, ImageFont
def make_card(name="你", output="zhongqiu_card.png"):
"""生成一张中秋贺卡,把 name 填进祝福语里。"""
width, height = 800, 1000
img = Image.new("RGB", (width, height), "#1a2a4a") # 深蓝夜空
draw = ImageDraw.Draw(img)
# 画一轮月亮(椭圆就是圆)
draw.ellipse((300, 180, 500, 380), fill="#fff7d6")
# 字体:Windows 用微软雅黑;Mac 换 "/System/Library/Fonts/PingFang.ttc"
try:
font_big = ImageFont.truetype("C:/Windows/Fonts/msyh.ttc", 52)
font_mid = ImageFont.truetype("C:/Windows/Fonts/msyh.ttc", 34)
except Exception:
font_big = ImageFont.load_default()
font_mid = ImageFont.load_default()
# 祝福文字(anchor="mm" 表示文字以指定点为中心居中)
draw.text((400, 520), "中秋快乐", fill="#ffe9a8", font=font_big, anchor="mm")
draw.text((400, 620), f"{name} 祝您:阖家团圆,万事顺意", fill="#ffffff", font=font_mid, anchor="mm")
img.save(output)
print(f"贺卡已生成:{output}")
# 给不同的人各生成一张
for person in ["爸爸", "妈妈", "老朋友", "客户王总"]:
make_card(person, f"贺卡_{person}.png")
03 · CHAPTER THREE
这几行分别干了什么
画月亮:draw.ellipse((300, 180, 500, 380), ...) 传的是"左上角和右下角两个点"构成的矩形,Pillow 在这个矩形内画内切椭圆。当矩形是正方形(宽=高)时,画出来就是正圆——所以参数只要保证宽=高,就一定是圆月:
python
draw.ellipse((300, 180, 500, 380), fill="#fff7d6")
中文字体(最容易踩的坑):直接 draw.text 写中文,如果不指定中文字体,会显示成一堆方框(□□□)。必须用 ImageFont.truetype("字体路径", 字号) 加载中文字体。
Windows 上常见的是 C:/Windows/Fonts/msyh.ttc(微软雅黑);Mac 上是 /System/Library/Fonts/PingFang.ttc。不同机器路径不一样,所以用 try...except 兜底,找不到就退回默认字体(丑一点,但不会报错)。
文字居中:anchor="mm" 表示以指定的 (400, 520) 这个点作为文字的中心,这样文字不管多长都能居中,不用自己手动算偏移。
批量生成:把名字放进列表,一个循环就生成好几张——给爸妈、给朋友、给客户,每张都带着对方的名字。
以上就是“用Python生成中秋贺卡,带上名字的那种!”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/14548/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料