🎯 目标功能:
- 输入文案,自动生成美观的朋友圈/宣传海报图
- 支持自定义模板(背景图 + 字体 + logo)
- 文案自动换行排版、居中对齐
- 一键生成 JPG 或 PNG 格式图片
📦 依赖安装:
bash
pip install pillow
📁 项目结构:
bash
poster_generator/
├── generate_poster.py # 主程序
├── assets/
│ ├── bg.jpg # 背景图
│ ├── font.ttf # 字体文件
│ └── logo.png # 可选 logo
└── output/
🧠 generate_poster.py(主程序核心逻辑):
python
from PIL import Image, ImageDraw, ImageFont
import textwrap, os
from datetime import datetime
# 路径配置
BG_PATH = "assets/bg.png"
FONT_PATH = "/System/Library/Fonts/STHeiti Medium.ttc"
LOGO_PATH = "assets/logo.png"
OUTPUT_DIR = "output"
# 样式配置
TEXT_COLOR = (255, 255, 255)
TEXT_SIZE = 40
MAX_WIDTH = 30 # 每行字符数限制
MARGIN_TOP = 300
LINE_SPACING = 15
def draw_text(draw, text, font, x, y, max_width):
lines = textwrap.wrap(text, width=max_width)
for line in lines:
bbox = draw.textbbox((0, 0), user_text, font=font)
w = bbox[2] - bbox[0]
h = bbox[3] - bbox[1]
# w, h = draw.textsize(line, font=font)
draw.text(((800 - w) / 2, y), line, font=font, fill=TEXT_COLOR)
y += h + LINE_SPACING
return y
def generate_poster(text):
os.makedirs(OUTPUT_DIR, exist_ok=True)
# 背景图
bg = Image.open(BG_PATH).convert("RGBA")
draw = ImageDraw.Draw(bg)
# 字体
font = ImageFont.truetype(FONT_PATH, TEXT_SIZE)
# 添加文本
y = draw_text(draw, text, font, x=50, y=MARGIN_TOP, max_width=MAX_WIDTH)
# 添加 logo
if os.path.exists(LOGO_PATH):
logo = Image.open(LOGO_PATH).convert("RGBA").resize((100, 100))
bg.paste(logo, (680, 1200), mask=logo)
# 保存图像
filename = f"{OUTPUT_DIR}/poster_{datetime.now().strftime('%Y%m%d_%H%M%S')}.png"
bg.save(filename)
print(f"✅ 海报生成成功:{filename}")
if __name__ == "__main__":
user_text = input("📩 请输入要生成海报的文案:\n")
generate_poster(user_text)
🖼 示例效果:
假设你输入的文案是:


程序将输出一张图文结合的朋友圈海报,可直接用于朋友圈或公众号。
💡 可扩展方向:
- 支持多模板选择(横版/竖版、红色/蓝色等)
- 可加二维码(Pillow + qrcode)
- 调用 AI 自动生成文案再配图
- 集成到网页、CLI 工具、公众号等