TravelContentCreator/scripts/test_poster_v2.py
jinye_huang dcfd820ca4 feat(poster_v2): 智能海报生成引擎 v1.0
- 新增 PosterSmartEngine,AI 生成文案 + 海报渲染
- 5 种布局支持文本换行和自适应字体
- 修复按钮/标签颜色显示问题
- 优化渐变遮罩和内容区域计算
- Prompt 优化:标题格式为产品名+描述
2025-12-10 15:04:59 +08:00

141 lines
4.5 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
测试 poster_v2 模块
"""
import sys
from pathlib import Path
# 添加项目根目录到路径
sys.path.insert(0, str(Path(__file__).parent.parent))
from poster_v2 import PosterFactory, PosterContent
# 输出目录
OUTPUT_DIR = Path(__file__).parent.parent / "result" / "poster_v2_test"
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
def main():
print("=" * 50)
print("测试 poster_v2 模块")
print("=" * 50)
factory = PosterFactory()
# 测试1: hero_bottom
print("\n[1] 测试 hero_bottom 布局...")
poster = factory.generate(
layout="hero_bottom",
theme="ocean",
title="正佳极地海洋世界",
subtitle="周末带娃去的,企鹅太可爱了",
details=["含企鹅馆+海豚表演", "儿童免费入场", "停车方便"],
price="¥199",
tags=["周末遛娃", "亲子游"]
)
poster.save(OUTPUT_DIR / "01_hero_bottom_ocean.png")
print(f"✓ 保存: 01_hero_bottom_ocean.png")
# 测试2: overlay_center
print("\n[2] 测试 overlay_center 布局...")
poster = factory.generate(
layout="overlay_center",
theme="sunset",
title="广州三日游",
subtitle="打卡必去的10个景点",
tags=["旅行攻略", "广州"]
)
poster.save(OUTPUT_DIR / "02_overlay_center_sunset.png")
print(f"✓ 保存: 02_overlay_center_sunset.png")
# 测试3: overlay_bottom (带emoji)
print("\n[3] 测试 overlay_bottom 布局 (带emoji)...")
poster = factory.generate(
layout="overlay_bottom",
theme="peach",
emoji="🍰",
title="发现一家神仙甜品店",
subtitle="闺蜜推荐的,颜值和味道都绝了",
highlights=["颜值高", "不踩雷", "出片"],
details=["招牌千层蛋糕必点", "下午茶套餐更划算"],
price="¥68",
tags=["下午茶", "约会"]
)
poster.save(OUTPUT_DIR / "03_overlay_bottom_peach.png")
print(f"✓ 保存: 03_overlay_bottom_peach.png")
# 测试4: split_vertical
print("\n[4] 测试 split_vertical 布局...")
poster = factory.generate(
layout="split_vertical",
theme="mint",
label="品质优选",
title="山海度假",
subtitle="面朝大海春暖花开",
features=["海景房", "无边泳池", "私人沙滩", "自助早餐"],
details=["距机场30分钟", "免费停车"],
price="¥888"
)
poster.save(OUTPUT_DIR / "04_split_vertical_mint.png")
print(f"✓ 保存: 04_split_vertical_mint.png")
# 测试5: card_float
print("\n[5] 测试 card_float 布局...")
poster = factory.generate(
layout="card_float",
theme="latte",
label="小众宝藏",
title="山间咖啡民宿",
subtitle="远离喧嚣,享受慢生活",
features=["独立庭院", "手冲咖啡", "山景露台", "有机早餐"],
details=["自驾更方便", "适合2-4人"],
price="¥458"
)
poster.save(OUTPUT_DIR / "05_card_float_latte.png")
print(f"✓ 保存: 05_card_float_latte.png")
# 测试6: 使用 PosterContent 对象
print("\n[6] 测试 PosterContent 对象...")
content = PosterContent(
title="周末露营派对",
subtitle="一起看星星烤肉吧",
tags=["露营", "周末活动"]
)
poster = factory.generate_from_content(content, layout="overlay_center", theme="ocean")
poster.save(OUTPUT_DIR / "06_content_object.png")
print(f"✓ 保存: 06_content_object.png")
# 测试7: 布局推荐
print("\n[7] 测试布局推荐...")
test_contents = [
{"emoji": "🍜", "title": "面馆"},
{"features": ["A", "B", "C", "D"], "title": "酒店"},
{"title": "攻略"},
]
for c in test_contents:
suggested = factory.suggest_layout(c)
print(f" {c.get('title', 'N/A')}{suggested}")
# 测试8: 全主题预览
print("\n[8] 生成全主题预览...")
for theme in factory.list_themes():
poster = factory.generate(
layout="hero_bottom",
theme=theme,
title="主题预览",
subtitle=f"这是 {theme} 主题",
price="¥99"
)
poster.save(OUTPUT_DIR / f"theme_{theme}.png")
print(f"✓ theme_{theme}.png")
print("\n" + "=" * 50)
print(f"✓ 全部完成! 输出目录: {OUTPUT_DIR}")
print("=" * 50)
if __name__ == "__main__":
main()