demo_shoe_compose.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # -*- coding: utf-8 -*-
  2. """
  3. demo_shoe_compose.py —— shoe_main_image_compose 的演示/验证脚本
  4. 1. 按实测裁剪框从 ref_b.png(图1,目标效果图)直接裁出 logo 与 5 只鞋,
  5. 生成测试素材(python/output/demo_shoe_assets/)。
  6. 不做抠图 —— 实际使用时传入的鞋子图本身就是透明底 PNG,
  7. compose_shoe_main_image 会先按 alpha 裁切最小边再合成。
  8. 2. 以 ref_a.png(图2,底图模板)为底,分别按 5 款 / 1 款 / 7 款 数量
  9. 调用 compose_shoe_main_image 合成,验证等分布局。
  10. 运行: python demo_shoe_compose.py
  11. """
  12. from service.shoe_main_image_compose import compose_shoe_main_image # noqa: E402
  13. REF_TPL = "resources/detail_temp/scene/tpl_1.png" # 图2:底图模板
  14. # 图1 中各素材的裁剪框 (x1, y1, x2, y2),按像素测量的最小边。
  15. # x2 统一取 136:刚好在浅色区与粉色布景交界处左侧,裁出的素材不含布景条纹。
  16. def main():
  17. logo = "output/demo_shoe_assets/logo.png"
  18. items = {
  19. "logo": logo,
  20. "number_mid": {"name": "货号(中童)", "value": "1025B-17"},
  21. "size_mid": {"name": "尺码 Size", "value": "24-29#"},
  22. "number_big": {"name": "货号(大童)", "value": "1025A-17"},
  23. "size_big": {"name": "尺码 Size", "value": "30-35#"},
  24. "box": {"name": "装箱 Box", "value": "60双"},
  25. "image_path": pil,
  26. "images": [
  27. {
  28. "image_path": pil,
  29. "color": "米白",
  30. },
  31. {
  32. "image_path": pil,
  33. "color": "粉色",
  34. },
  35. {
  36. "image_path": pil,
  37. "color": "卡其",
  38. },
  39. {
  40. "image_path": pil,
  41. "color": "蓝色",
  42. },
  43. ]
  44. }
  45. result_url = compose_shoe_main_image(template=REF_TPL,
  46. data=items,
  47. label_pos="right",
  48. shoe_scale=0.9,
  49. font_path="resources/ttl/MiSans-Light.ttf",
  50. upload=True,
  51. info_bottom_margin=20,
  52. label_font_size=30,
  53. info_bar_height=40,
  54. info_font_size=34)
  55. print("合成完成,输出:", result_url)
  56. if __name__ == "__main__":
  57. main()