- 新增 PosterSmartEngine,AI 生成文案 + 海报渲染 - 5 种布局支持文本换行和自适应字体 - 修复按钮/标签颜色显示问题 - 优化渐变遮罩和内容区域计算 - Prompt 优化:标题格式为产品名+描述
146 lines
5.0 KiB
Python
146 lines
5.0 KiB
Python
#!/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()
|