TravelContentCreator/scripts/test_poster_v2_real_image.py

146 lines
5.0 KiB
Python
Raw Normal View History

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