#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 测试 poster_v2 模块 - 使用真实图片 """ import sys from pathlib import Path from PIL import Image # 添加项目根目录到路径 sys.path.insert(0, str(Path(__file__).parent.parent)) from poster_v2 import PosterFactory, PosterContent from poster_v2.config import validate_fonts # 输出目录 OUTPUT_DIR = Path(__file__).parent.parent / "result" / "poster_v2_real" OUTPUT_DIR.mkdir(parents=True, exist_ok=True) # 测试图片 TEST_IMAGE = Path("/root/TravelContentCreator/data/images/广东旅游_放弃伊犁这藏在广东的小新疆更有性价比_6836f1aa0000000021018c5a_1.jpg") def main(): print("=" * 50) print("测试 poster_v2 模块 - 真实图片") print("=" * 50) # 验证字体 print("\n[0] 验证字体配置...") fonts_status = validate_fonts() if fonts_status["valid"]: print("✓ 所有字体文件存在") else: print("✗ 缺少字体文件:") for name, path in fonts_status["missing"]: print(f" - {name}: {path}") return # 加载测试图片 print(f"\n[1] 加载测试图片: {TEST_IMAGE.name}") if not TEST_IMAGE.exists(): print(f"✗ 图片不存在: {TEST_IMAGE}") return img = Image.open(TEST_IMAGE) print(f"✓ 图片尺寸: {img.size}") factory = PosterFactory() # 测试1: hero_bottom + 真实图片 print("\n[2] 测试 hero_bottom + 真实图片...") content = PosterContent( title="广东小新疆", subtitle="藏在广东的绝美秘境,比伊犁更有性价比", details=["自驾3小时可达", "门票免费", "适合露营"], price="¥0", price_suffix="/人", tags=["广东旅游", "小众景点"], image=img ) poster = factory.generate_from_content(content, layout="hero_bottom", theme="sunset") poster.save(OUTPUT_DIR / "real_01_hero_bottom.png") print(f"✓ 保存: real_01_hero_bottom.png") # 测试2: overlay_center + 真实图片 print("\n[3] 测试 overlay_center + 真实图片...") content = PosterContent( title="广东三日游攻略", subtitle="小众景点打卡指南", tags=["旅行攻略", "广东"], image=img ) poster = factory.generate_from_content(content, layout="overlay_center", theme="ocean") poster.save(OUTPUT_DIR / "real_02_overlay_center.png") print(f"✓ 保存: real_02_overlay_center.png") # 测试3: overlay_bottom + 真实图片 print("\n[4] 测试 overlay_bottom + 真实图片...") content = PosterContent( title="发现广东小新疆", subtitle="比伊犁更近,景色一样美", emoji="🏔️", highlights=["免门票", "人少", "出片"], details=["建议自驾前往", "带上露营装备"], price="¥0", tags=["自驾游", "露营"], image=img ) poster = factory.generate_from_content(content, layout="overlay_bottom", theme="mint") poster.save(OUTPUT_DIR / "real_03_overlay_bottom.png") print(f"✓ 保存: real_03_overlay_bottom.png") # 测试4: split_vertical + 真实图片 print("\n[5] 测试 split_vertical + 真实图片...") content = PosterContent( title="广东秘境", subtitle="小新疆风光", label="小众推荐", features=["草原风光", "湖泊美景", "日落绝美", "适合露营"], details=["距广州3小时车程", "建议住一晚"], price="¥0", image=img ) poster = factory.generate_from_content(content, layout="split_vertical", theme="latte") poster.save(OUTPUT_DIR / "real_04_split_vertical.png") print(f"✓ 保存: real_04_split_vertical.png") # 测试5: card_float + 真实图片 print("\n[6] 测试 card_float + 真实图片...") content = PosterContent( title="广东小新疆", subtitle="周末自驾好去处", label="编辑推荐", features=["草原风光", "湖泊倒影", "日落星空", "露营胜地"], details=["需自驾前往", "建议带帐篷"], price="¥0", price_suffix="/人", image=img ) poster = factory.generate_from_content(content, layout="card_float", theme="ocean") poster.save(OUTPUT_DIR / "real_05_card_float.png") print(f"✓ 保存: real_05_card_float.png") # 测试6: 所有主题 + 真实图片 print("\n[7] 生成所有主题预览...") for theme in factory.list_themes(): content = PosterContent( title="广东小新疆", subtitle="绝美秘境等你来", price="¥0", image=img ) poster = factory.generate_from_content(content, layout="hero_bottom", theme=theme) poster.save(OUTPUT_DIR / f"real_theme_{theme}.png") print(f"✓ real_theme_{theme}.png") print("\n" + "=" * 50) print(f"✓ 全部完成! 输出目录: {OUTPUT_DIR}") print("=" * 50) if __name__ == "__main__": main()