#!/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()