detail_hongqingting3.py 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879
  1. """
  2. 步骤:
  3. 1、整理需要处理的款号图-输出款号图文件夹
  4. 2、整理所有相关的图片作为素材图
  5. 3、按要求进行拼接
  6. """
  7. import os
  8. from PIL import ImageFont
  9. import sys
  10. import settings
  11. # from module.view_control.generate_goods_no_detail_pic.detail_generate_base import DetailBase
  12. # from module.view_control.generate_goods_no_detail_pic.pic_deal import PictureProcessing
  13. is_test_plugins = False
  14. try:
  15. is_test_plugins = settings.is_test_plugins
  16. except:
  17. is_test_plugins = False
  18. if is_test_plugins:
  19. from custom_plugins.plugins_mode.detail_generate_base import DetailBase
  20. from custom_plugins.plugins_mode.pic_deal import PictureProcessing
  21. else:
  22. from plugins_mode.detail_generate_base import DetailBase
  23. from plugins_mode.pic_deal import PictureProcessing
  24. plugins_name = "详情模板"
  25. company_name_list = ["红蜻蜓",]
  26. template_name = "hongqingt-3"
  27. class DetailPicGet(DetailBase):
  28. need_view = ["俯视", "侧视", "后跟", "鞋底", "内里", "组合"]
  29. root = r"{}\resources\detail_temp\hongqingting\3".format(os.getcwd())
  30. def __init__(self, goods_no, goods_no_value: dict, out_put_dir, windows=None, test=False, excel_data=None,
  31. assigned_page_list=None):
  32. super().__init__(goods_no, goods_no_value, out_put_dir, windows=windows, excel_data=excel_data,
  33. assigned_page_list=assigned_page_list)
  34. self.template_name = template_name
  35. self.root = r"{}\resources\detail_temp\hongqingting\3".format(os.getcwd())
  36. print("run hongqingt-3 ")
  37. self.base_bg_color = (228, 196, 147)
  38. bg_color = (246, 246, 246)
  39. self.image_init(bg_color)
  40. self.deal_pic_func_list = [
  41. self.deal_pic_1,
  42. self.deal_pic_2,
  43. # self.deal_pic_3,
  44. self.deal_pic_4,
  45. self.deal_pic_5,
  46. self.deal_pic_6,
  47. self.deal_pic_7,
  48. # self.deal_pic_8,
  49. # self.deal_pic_9,
  50. self.deal_pic_10,
  51. self.deal_pic_11,
  52. self.deal_pic_12
  53. ]
  54. self.run_all()
  55. def deal_pic_1(self):
  56. goods_art_no_list = list(self.data.keys())
  57. # 背景图
  58. bg_img = PictureProcessing(r"{}\1.jpg".format(self.root))
  59. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 40)
  60. year = self.get_text_value("出品年")
  61. bg_img.get_text_image_advanced(
  62. value=(620, 499),
  63. font=font_hei,
  64. text=year,
  65. align="left",
  66. # anchor="ma",
  67. spacing=5,
  68. fill=(255, 255, 255),
  69. return_mode="image",
  70. margins=(0, 0, 0, 0),
  71. )
  72. mtitle = self.get_text_value("主标题")
  73. bg_img.get_text_image_advanced(
  74. value=(510, 567),
  75. font=font_hei,
  76. text=mtitle,
  77. align="left",
  78. # anchor="ma",
  79. spacing=5,
  80. fill=(255, 255, 255),
  81. return_mode="image",
  82. margins=(0, 0, 0, 0),
  83. )
  84. stitle = self.get_text_value("副标题")
  85. bg_img.get_text_image_advanced(
  86. value=(300, 650),
  87. font=font_hei,
  88. text=stitle,
  89. align="left",
  90. # anchor="ma",
  91. spacing=15,
  92. fill=(255, 255, 255),
  93. return_mode="image",
  94. margins=(0, 0, 0, 0),
  95. )
  96. pp_jpg_1, pp_png_1 = self.image_one_pic(
  97. return_orign=True,
  98. goods_art_no=goods_art_no_list[0],
  99. name="俯视",
  100. )
  101. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im):
  102. pp_png_1 = pp_png_1.transpose()
  103. pp_jpg_1 = pp_jpg_1.transpose()
  104. # aaa_img = PictureProcessing("RGBA", (pp_jpg_1.width*1.2, pp_jpg_1.height*1.2), (255,255,255,0))
  105. #
  106. pp_png_1 = pp_png_1.resize(value=850)
  107. pp_jpg_1 = pp_jpg_1.resize(value=850)
  108. #
  109. # aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  110. # pp_png_1 = aaa_img.rotate(0)
  111. bg_img = bg_img.to_overlay_pic_advance(
  112. mode="pixel",
  113. top_img=pp_jpg_1,
  114. base="cs",
  115. value=(-200, 350),
  116. top_png_img=pp_png_1,
  117. )
  118. pp_jpg_2, pp_png_2 = self.image_one_pic(
  119. return_orign=True,
  120. goods_art_no=goods_art_no_list[0],
  121. name="俯视",
  122. )
  123. if self.check_shoe_is_right_by_pixel(im=pp_png_2.im)== False:
  124. pp_png_2 = pp_png_2.transpose()
  125. pp_jpg_2 = pp_jpg_2.transpose()
  126. pp_png_2 = pp_png_2.resize(value=850)
  127. pp_jpg_2 = pp_jpg_2.resize(value=850)
  128. # aaa_img = PictureProcessing("RGBA", (pp_jpg_2.width*1.2, pp_jpg_2.height*1.2), (255,255,255,0))
  129. #
  130. # aaa_img = aaa_img.paste_img(top_img=pp_png_2,base="cc", value=(0, 0))
  131. #
  132. # pp_png_2 = aaa_img.rotate(0)
  133. bg_img = bg_img.to_overlay_pic_advance(
  134. mode="pixel",
  135. top_img=pp_jpg_2,
  136. base="cs",
  137. value=(200, 900),
  138. top_png_img=pp_png_2,
  139. )
  140. return bg_img
  141. def deal_pic_2(self):
  142. detailed_images = []
  143. goods_art_no_list = list(self.data.keys())
  144. # 背景图
  145. bg_img = PictureProcessing(r"{}\2.jpg".format(self.root))
  146. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 45)
  147. year = self.get_text_value("系列名")
  148. bg_img.get_text_image_advanced(
  149. value=(740, 520),
  150. font=font_hei,
  151. text=year,
  152. align="left",
  153. # anchor="ma",
  154. spacing=5,
  155. fill=(75, 69, 107),
  156. return_mode="image",
  157. margins=(0, 0, 0, 0),
  158. )
  159. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  160. goods_art_no=goods_art_no_list[0],
  161. name="俯视",
  162. )
  163. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  164. pp_jpg_1 = pp_jpg_1.transpose()
  165. pp_png_1 = pp_png_1.transpose()
  166. pp_jpg_1 = pp_jpg_1.resize(value=850)
  167. pp_png_1 = pp_png_1.resize(value=850)
  168. pp_jpg_1=pp_jpg_1.rotate_advance(doge=-35,is_crop=False)
  169. pp_png_1=pp_png_1.rotate_advance(doge=-35,is_crop=False)
  170. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(0, 100))
  171. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  172. # return_orign=True,
  173. # goods_art_no=goods_art_no_list[0],
  174. # name="俯视",
  175. # )
  176. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==False:
  177. # pp_png_1 = pp_png_1.transpose()
  178. # pp_jpg_1 = pp_jpg_1.transpose()
  179. #
  180. # aaa_img = PictureProcessing("RGBA", (pp_jpg_1.width*1.2, pp_jpg_1.height*1.2), (255,255,255,0))
  181. #
  182. # pp_png_1 = pp_png_1.resize(value=850)
  183. # pp_jpg_1 = pp_jpg_1.resize(value=850)
  184. #
  185. # aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  186. #
  187. # pp_png_1 = aaa_img.rotate(-35)
  188. #
  189. # bg_img = bg_img.to_overlay_pic_advance(
  190. # mode="pixel",
  191. # top_img=pp_png_1,
  192. # base="cs",
  193. # value=(0, -100),
  194. # top_png_img=pp_png_1,
  195. # )
  196. detailed_images.append(bg_img)
  197. return PictureProcessing(im=self.add_pic(detailed_images))
  198. # return bg_img
  199. def deal_pic_3(self):
  200. # 背景图
  201. bg_img = PictureProcessing(r"{}\3.jpg".format(self.root))
  202. # sign_img = PictureProcessing(r"{}\3.png".format(self.root))
  203. # bg_img = bg_img.paste_img(top_img=sign_img,base="cc", value=(0, 0))
  204. return bg_img
  205. def deal_pic_4(self):
  206. detailed_images = []
  207. goods_art_no_list = list(self.data.keys())
  208. # 背景图
  209. bg_img = PictureProcessing(r"{}\4.jpg".format(self.root))
  210. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  211. goods_art_no=goods_art_no_list[0],
  212. name="后跟",
  213. )
  214. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  215. pp_jpg_1 = pp_jpg_1.transpose()
  216. pp_png_1 = pp_png_1.transpose()
  217. pp_jpg_1 = pp_jpg_1.resize(value=850)
  218. pp_png_1 = pp_png_1.resize(value=850)
  219. pp_jpg_1=pp_jpg_1.rotate_advance(doge=25,is_crop=False)
  220. pp_png_1=pp_png_1.rotate_advance(doge=25,is_crop=False)
  221. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(-250, -120))
  222. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  223. goods_art_no=goods_art_no_list[0],
  224. name="俯视",
  225. )
  226. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == True:
  227. pp_jpg_1 = pp_jpg_1.transpose()
  228. pp_png_1 = pp_png_1.transpose()
  229. pp_jpg_1 = pp_jpg_1.resize(value=800)
  230. pp_png_1 = pp_png_1.resize(value=800)
  231. pp_jpg_1=pp_jpg_1.rotate_advance(doge=30,is_crop=False)
  232. pp_png_1=pp_png_1.rotate_advance(doge=30,is_crop=False)
  233. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(220, -250))
  234. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  235. # return_orign=True,
  236. # goods_art_no=goods_art_no_list[0],
  237. # name="后跟",
  238. # )
  239. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== False:
  240. # pp_png_1 = pp_png_1.transpose()
  241. # aaa_img = PictureProcessing("RGBA", (pp_jpg_1.width*1.2, pp_jpg_1.height*1.2), (255,255,255,0))
  242. # pp_png_1 = pp_png_1.resize(value=850)
  243. # aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  244. # pp_png_1 = aaa_img.rotate(15)
  245. # bg_img = bg_img.to_overlay_pic_advance(
  246. # mode="pixel",
  247. # top_img=pp_png_1,
  248. # base="cs",
  249. # value=(-250, 300),
  250. # top_png_img=pp_png_1,
  251. # )
  252. # pp_jpg_2, pp_png_2 = self.image_one_pic(
  253. # return_orign=True,
  254. # goods_art_no=goods_art_no_list[0],
  255. # name="俯视",
  256. # )
  257. # if self.check_shoe_is_right_by_pixel(im=pp_png_2.im):
  258. # pp_png_2 = pp_png_2.transpose()
  259. # pp_png_2 = pp_png_2.resize(value=800)
  260. # aaa_img = PictureProcessing("RGBA", (pp_jpg_2.width*1.2, pp_jpg_2.height*1.2), (255,255,255,0))
  261. # aaa_img = aaa_img.paste_img(top_img=pp_png_2,base="cc", value=(0, 0))
  262. # pp_png_2 = aaa_img.rotate(15)
  263. # bg_img = bg_img.to_overlay_pic_advance(
  264. # mode="pixel",
  265. # top_img=pp_png_2,
  266. # base="cs",
  267. # value=(220, -450),
  268. # top_png_img=pp_png_2,
  269. # )
  270. detailed_images.append(bg_img)
  271. return PictureProcessing(im=self.add_pic(detailed_images))
  272. return bg_img
  273. def deal_pic_5(self):
  274. detailed_images = []
  275. goods_art_no_list = list(self.data.keys())
  276. # 背景图
  277. bg_img = PictureProcessing(r"{}\5.jpg".format(self.root))
  278. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  279. goods_art_no=goods_art_no_list[0],
  280. name="侧视",
  281. )
  282. pp_jpg_1 = pp_jpg_1.resize(value=850)
  283. pp_png_1 = pp_png_1.resize(value=850)
  284. pp_jpg_1=pp_jpg_1.rotate_advance(doge=22,is_crop=False)
  285. pp_png_1=pp_png_1.rotate_advance(doge=22,is_crop=False)
  286. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(-50, -230))
  287. detailed_images.append(bg_img)
  288. return PictureProcessing(im=self.add_pic(detailed_images))
  289. def deal_pic_6(self):
  290. if self.get_text_value("模特图"):
  291. hh_img = PictureProcessing(r"{}\6.jpg".format(self.root))
  292. mote_img = PictureProcessing(self.get_text_value("模特图"))
  293. mote_img = mote_img.resize(value=1400)
  294. bg_img = PictureProcessing("RGB", (hh_img.width, hh_img.height+mote_img.height), (255,255,255))
  295. bg_img = bg_img.paste_img(top_img=hh_img,base="nc", value=(0, 0))
  296. bg_img = bg_img.paste_img(top_img=mote_img,base="nc", value=(0, hh_img.height))
  297. return bg_img
  298. else:
  299. return
  300. def deal_pic_7(self):
  301. if self.get_text_value("场景图"):
  302. hh_img = PictureProcessing(r"{}\7.jpg".format(self.root))
  303. mote_img = PictureProcessing(self.get_text_value("场景图"))
  304. mote_img = mote_img.resize(value=1400)
  305. bg_img = PictureProcessing("RGB", (hh_img.width, hh_img.height+mote_img.height), (255,255,255))
  306. bg_img = bg_img.paste_img(top_img=hh_img,base="nc", value=(0, 0))
  307. bg_img = bg_img.paste_img(top_img=mote_img,base="nc", value=(0, hh_img.height))
  308. return bg_img
  309. else:
  310. return
  311. def deal_pic_8(self):
  312. # 背景图
  313. bg_img = PictureProcessing(r"{}\8.jpg".format(self.root))
  314. return bg_img
  315. def deal_pic_9(self):
  316. # 背景图
  317. bg_img = PictureProcessing(r"{}\9.jpg".format(self.root))
  318. return bg_img
  319. def deal_pic_10(self):
  320. goods_art_no_list = list(self.data.keys())
  321. # 背景图
  322. bg_img = PictureProcessing(r"{}\10.jpg".format(self.root))
  323. # 长宽示例
  324. pp_jpg_1, pp_png_1 = self.image_one_pic(
  325. return_orign=True,
  326. goods_art_no=goods_art_no_list[0],
  327. name="俯视",
  328. )
  329. pp_jpg_1 = pp_jpg_1.resize(value=660)
  330. pp_png_1 = pp_png_1.resize(value=660)
  331. bg_img = bg_img.to_overlay_pic_advance(
  332. mode="pixel",
  333. top_img=pp_jpg_1,
  334. base="cs",
  335. value=(-40, 1640),
  336. top_png_img=pp_png_1,
  337. )
  338. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24) # 设计理念
  339. xiemian = self.get_text_value("鞋面")
  340. neili = self.get_text_value("内里")
  341. xiedian = self.get_text_value("鞋垫")
  342. xiedi = self.get_text_value("鞋底")
  343. bg_img.get_text_image_advanced(
  344. value=(302, 1648),
  345. font=font_hei,
  346. text=xiemian,
  347. align="left",
  348. # anchor="ma",
  349. spacing=5,
  350. fill=(74, 74, 74),
  351. return_mode="image",
  352. margins=(0, 0, 0, 0),
  353. )
  354. bg_img.get_text_image_advanced(
  355. value=(944, 1648),
  356. font=font_hei,
  357. text=neili,
  358. align="left",
  359. # anchor="ma",
  360. spacing=5,
  361. fill=(74, 74, 74),
  362. return_mode="image",
  363. margins=(0, 0, 0, 0),
  364. )
  365. bg_img.get_text_image_advanced(
  366. value=(302, 1900),
  367. font=font_hei,
  368. text=xiedian,
  369. align="left",
  370. # anchor="ma",
  371. spacing=5,
  372. fill=(74, 74, 74),
  373. return_mode="image",
  374. margins=(0, 0, 0, 0),
  375. )
  376. bg_img.get_text_image_advanced(
  377. value=(944, 1900),
  378. font=font_hei,
  379. text=xiedi,
  380. align="left",
  381. # anchor="ma",
  382. spacing=5,
  383. fill=(74, 74, 74),
  384. return_mode="image",
  385. margins=(0, 0, 0, 0),
  386. )
  387. itemNo = self.goods_no_value["货号资料"][0]["货号"]
  388. bg_img.get_text_image_advanced(
  389. value=(302, 2172),
  390. font=font_hei,
  391. text=itemNo,
  392. align="left",
  393. # anchor="ma",
  394. spacing=5,
  395. fill=(74, 74, 74),
  396. return_mode="image",
  397. margins=(0, 0, 0, 0),
  398. )
  399. xiekuan = self.get_text_value("鞋宽")
  400. xiechang = self.get_text_value("鞋长")
  401. gengao = self.get_text_value("跟高")
  402. bg_img.get_text_image_advanced(
  403. value=(223, 894),
  404. font=font_hei,
  405. text="鞋宽"+xiekuan,
  406. align="left",
  407. # anchor="ma",
  408. spacing=5,
  409. fill=(74, 74, 74),
  410. return_mode="image",
  411. margins=(0, 0, 0, 0),
  412. )
  413. bg_img.get_text_image_advanced(
  414. value=(585, 1269),
  415. font=font_hei,
  416. text="鞋长"+xiechang,
  417. align="left",
  418. # anchor="ma",
  419. spacing=5,
  420. fill=(74, 74, 74),
  421. return_mode="image",
  422. margins=(0, 0, 0, 0),
  423. )
  424. bg_img.get_text_image_advanced(
  425. value=(1089, 1014),
  426. font=font_hei,
  427. text="跟高"+gengao,
  428. align="left",
  429. # anchor="ma",
  430. spacing=5,
  431. fill=(74, 74, 74),
  432. return_mode="image",
  433. margins=(0, 0, 0, 0),
  434. )
  435. # 底部三连鞋子带文字
  436. font_main = ImageFont.truetype(
  437. r"resources\ttf\puhui\Medium.ttf", 30
  438. )
  439. length=len(goods_art_no_list)
  440. if length==3:
  441. pp_jpg_1, pp_png_1 = self.image_one_pic(
  442. return_orign=True,
  443. goods_art_no=goods_art_no_list[0],
  444. name="侧视",
  445. )
  446. pp_jpg_1 = pp_jpg_1.resize(value=250)
  447. pp_png_1 = pp_png_1.resize(value=250)
  448. bg_img = bg_img.to_overlay_pic_advance(
  449. mode="pixel",
  450. top_img=pp_jpg_1,
  451. base="cs",
  452. value=(-320, 366),
  453. top_png_img=pp_png_1,
  454. )
  455. bg_img.get_text_image_advanced(
  456. value=(345, 2520),
  457. font=font_main,
  458. text=self.goods_no_value["货号资料"][0]["颜色名称"],
  459. align="center",
  460. # anchor="ma",
  461. spacing=5,
  462. fill=(0, 0, 0),
  463. return_mode="image",
  464. margins=(0, 0, 0, 0),
  465. )
  466. pp_jpg_1, pp_png_1 = self.image_one_pic(
  467. return_orign=True,
  468. goods_art_no=goods_art_no_list[1],
  469. name="侧视",
  470. )
  471. pp_jpg_1 = pp_jpg_1.resize(value=250)
  472. pp_png_1 = pp_png_1.resize(value=250)
  473. bg_img = bg_img.to_overlay_pic_advance(
  474. mode="pixel",
  475. top_img=pp_jpg_1,
  476. base="cs",
  477. value=(0, 366),
  478. top_png_img=pp_png_1,
  479. )
  480. bg_img.get_text_image_advanced(
  481. value=(655, 2520),
  482. font=font_main,
  483. text=self.goods_no_value["货号资料"][1]["颜色名称"],
  484. align="center",
  485. # anchor="ma",
  486. spacing=5,
  487. fill=(0, 0, 0),
  488. return_mode="image",
  489. margins=(0, 0, 0, 0),
  490. )
  491. pp_jpg_1, pp_png_1 = self.image_one_pic(
  492. return_orign=True,
  493. goods_art_no=goods_art_no_list[2],
  494. name="侧视",
  495. )
  496. pp_jpg_1 = pp_jpg_1.resize(value=250)
  497. pp_png_1 = pp_png_1.resize(value=250)
  498. bg_img = bg_img.to_overlay_pic_advance(
  499. mode="pixel",
  500. top_img=pp_jpg_1,
  501. base="cs",
  502. value=(320, 366),
  503. top_png_img=pp_png_1,
  504. )
  505. bg_img.get_text_image_advanced(
  506. value=(990, 2520),
  507. font=font_main,
  508. text=self.goods_no_value["货号资料"][2]["颜色名称"],
  509. align="center",
  510. # anchor="ma",
  511. spacing=5,
  512. fill=(0, 0, 0),
  513. return_mode="image",
  514. margins=(0, 0, 0, 0),
  515. )
  516. elif length==2:
  517. pp_jpg_1, pp_png_1 = self.image_one_pic(
  518. return_orign=True,
  519. goods_art_no=goods_art_no_list[0],
  520. name="侧视",
  521. )
  522. pp_jpg_1 = pp_jpg_1.resize(value=250)
  523. pp_png_1 = pp_png_1.resize(value=250)
  524. bg_img = bg_img.to_overlay_pic_advance(
  525. mode="pixel",
  526. top_img=pp_jpg_1,
  527. base="cs",
  528. value=(-320, 366),
  529. top_png_img=pp_png_1,
  530. )
  531. bg_img.get_text_image_advanced(
  532. value=(345, 2520),
  533. font=font_main,
  534. text=self.goods_no_value["货号资料"][0]["颜色名称"],
  535. align="center",
  536. # anchor="ma",
  537. spacing=5,
  538. fill=(0, 0, 0),
  539. return_mode="image",
  540. margins=(0, 0, 0, 0),
  541. )
  542. pp_jpg_1, pp_png_1 = self.image_one_pic(
  543. return_orign=True,
  544. goods_art_no=goods_art_no_list[1],
  545. name="侧视",
  546. )
  547. pp_jpg_1 = pp_jpg_1.resize(value=250)
  548. pp_png_1 = pp_png_1.resize(value=250)
  549. bg_img = bg_img.to_overlay_pic_advance(
  550. mode="pixel",
  551. top_img=pp_jpg_1,
  552. base="cs",
  553. value=(320, 366),
  554. top_png_img=pp_png_1,
  555. )
  556. bg_img.get_text_image_advanced(
  557. value=(990, 2520),
  558. font=font_main,
  559. text=self.goods_no_value["货号资料"][1]["颜色名称"],
  560. align="center",
  561. # anchor="ma",
  562. spacing=5,
  563. fill=(0, 0, 0),
  564. return_mode="image",
  565. margins=(0, 0, 0, 0),
  566. )
  567. elif length==1:
  568. pp_jpg_1, pp_png_1 = self.image_one_pic(
  569. return_orign=True,
  570. goods_art_no=goods_art_no_list[1],
  571. name="侧视",
  572. )
  573. pp_jpg_1 = pp_jpg_1.resize(value=250)
  574. pp_png_1 = pp_png_1.resize(value=250)
  575. bg_img = bg_img.to_overlay_pic_advance(
  576. mode="pixel",
  577. top_img=pp_jpg_1,
  578. base="cs",
  579. value=(0, 366),
  580. top_png_img=pp_png_1,
  581. )
  582. bg_img.get_text_image_advanced(
  583. value=(655, 2520),
  584. font=font_main,
  585. text=self.goods_no_value["货号资料"][1]["颜色名称"],
  586. align="center",
  587. # anchor="ma",
  588. spacing=5,
  589. fill=(0, 0, 0),
  590. return_mode="image",
  591. margins=(0, 0, 0, 0),
  592. )
  593. return bg_img
  594. def deal_pic_11(self):
  595. goods_art_no_list = list(self.data.keys())
  596. # 背景图
  597. header_img = PictureProcessing(r"{}\11-1.jpg".format(self.root))
  598. bg_img = PictureProcessing("RGBA", (header_img.width, 3575), (255,255,255))
  599. # 贴顶部
  600. bg_img = bg_img.to_overlay_pic_advance(
  601. mode="pixel",
  602. top_img=header_img,
  603. base="nc",
  604. value=(0, 0),
  605. top_png_img=header_img,
  606. )
  607. # item1
  608. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  609. length=len(goods_art_no_list)
  610. if length==3:
  611. pp_jpg_1, pp_png_1 = self.image_one_pic(
  612. return_orign=True,
  613. goods_art_no=goods_art_no_list[2],
  614. name="俯视",
  615. )
  616. pp_jpg_1 = pp_jpg_1.resize(value=460)
  617. pp_png_1 = pp_png_1.resize(value=460)
  618. item_img = item_img.to_overlay_pic_advance(
  619. mode="pixel",
  620. top_img=pp_jpg_1,
  621. base="cs",
  622. value=(-60, 300),
  623. top_png_img=pp_png_1,
  624. )
  625. if length>=2:
  626. pp_jpg_1, pp_png_1 = self.image_one_pic(
  627. return_orign=True,
  628. goods_art_no=goods_art_no_list[1],
  629. name="俯视",
  630. )
  631. pp_jpg_1 = pp_jpg_1.resize(value=460)
  632. pp_png_1 = pp_png_1.resize(value=460)
  633. item_img = item_img.to_overlay_pic_advance(
  634. mode="pixel",
  635. top_img=pp_jpg_1,
  636. base="cs",
  637. value=(0, 260),
  638. top_png_img=pp_png_1,
  639. )
  640. pp_jpg_1, pp_png_1 = self.image_one_pic(
  641. return_orign=True,
  642. goods_art_no=goods_art_no_list[0],
  643. name="俯视",
  644. )
  645. pp_jpg_1 = pp_jpg_1.resize(value=460)
  646. pp_png_1 = pp_png_1.resize(value=460)
  647. item_img = item_img.to_overlay_pic_advance(
  648. mode="pixel",
  649. top_img=pp_jpg_1,
  650. base="cs",
  651. value=(60, 220),
  652. top_png_img=pp_png_1,
  653. )
  654. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 40)
  655. item_img.get_text_image_advanced(
  656. value=(520, 600),
  657. font=font_hei,
  658. text="正面45°/FRONT45°",
  659. align="left",
  660. # anchor="ma",
  661. spacing=5,
  662. fill=(0, 0, 0),
  663. return_mode="image",
  664. margins=(0, 0, 0, 0),
  665. )
  666. bg_img = bg_img.to_overlay_pic_advance(
  667. mode="pixel",
  668. top_img=item_img,
  669. base="nc",
  670. value=(0, 534),
  671. top_png_img=item_img,
  672. )
  673. # item2
  674. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  675. pp_jpg_1, pp_png_1 = self.image_one_pic(
  676. return_orign=True,
  677. goods_art_no=goods_art_no_list[0],
  678. name="后跟",
  679. )
  680. pp_jpg_1 = pp_jpg_1.resize(value=460)
  681. pp_png_1 = pp_png_1.resize(value=460)
  682. item_img = item_img.to_overlay_pic_advance(
  683. mode="pixel",
  684. top_img=pp_jpg_1,
  685. base="cs",
  686. value=(60, 260),
  687. top_png_img=pp_png_1,
  688. )
  689. pp_jpg_1, pp_png_1 = self.image_one_pic(
  690. return_orign=True,
  691. goods_art_no=goods_art_no_list[0],
  692. name="后跟",
  693. )
  694. pp_jpg_1 = pp_jpg_1.resize(value=460)
  695. pp_png_1 = pp_png_1.resize(value=460)
  696. item_img = item_img.to_overlay_pic_advance(
  697. mode="pixel",
  698. top_img=pp_jpg_1,
  699. base="cs",
  700. value=(-60, 220),
  701. top_png_img=pp_png_1,
  702. )
  703. item_img.get_text_image_advanced(
  704. value=(520, 600),
  705. font=font_hei,
  706. text="背面45°/BACK45°",
  707. align="left",
  708. # anchor="ma",
  709. spacing=5,
  710. fill=(50, 50, 50),
  711. return_mode="image",
  712. margins=(0, 0, 0, 0),
  713. )
  714. bg_img = bg_img.to_overlay_pic_advance(
  715. mode="pixel",
  716. top_img=item_img,
  717. base="nc",
  718. value=(0, 534+760),
  719. top_png_img=item_img,
  720. )
  721. # item3
  722. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  723. pp_jpg_1, pp_png_1 = self.image_one_pic(
  724. return_orign=True,
  725. goods_art_no=goods_art_no_list[0],
  726. name="侧视",
  727. )
  728. pp_jpg_1 = pp_jpg_1.resize(value=530)
  729. pp_png_1 = pp_png_1.resize(value=530)
  730. item_img = item_img.to_overlay_pic_advance(
  731. mode="pixel",
  732. top_img=pp_jpg_1,
  733. base="cs",
  734. value=(0, 220),
  735. top_png_img=pp_png_1,
  736. )
  737. item_img.get_text_image_advanced(
  738. value=(600, 600),
  739. font=font_hei,
  740. text="侧面/SIDE",
  741. align="left",
  742. # anchor="ma",
  743. spacing=5,
  744. fill=(50, 50, 50),
  745. return_mode="image",
  746. margins=(0, 0, 0, 0),
  747. )
  748. bg_img = bg_img.to_overlay_pic_advance(
  749. mode="pixel",
  750. top_img=item_img,
  751. base="nc",
  752. value=(0, 534+760*2),
  753. top_png_img=item_img,
  754. )
  755. # item4
  756. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  757. pp_jpg_1, pp_png_1 = self.image_one_pic(
  758. return_orign=True,
  759. goods_art_no=goods_art_no_list[0],
  760. name="组合",
  761. )
  762. pp_jpg_1 = pp_jpg_1.resize(value=530)
  763. pp_png_1 = pp_png_1.resize(value=530)
  764. item_img = item_img.to_overlay_pic_advance(
  765. mode="pixel",
  766. top_img=pp_jpg_1,
  767. base="cs",
  768. value=(0, 220),
  769. top_png_img=pp_png_1,
  770. )
  771. item_img.get_text_image_advanced(
  772. value=(600, 600),
  773. font=font_hei,
  774. text="顶面/TOP",
  775. align="left",
  776. # anchor="ma",
  777. spacing=5,
  778. fill=(50, 50, 50),
  779. return_mode="image",
  780. margins=(0, 0, 0, 0),
  781. )
  782. bg_img = bg_img.to_overlay_pic_advance(
  783. mode="pixel",
  784. top_img=item_img,
  785. base="nc",
  786. value=(0, 534+760*3),
  787. top_png_img=item_img,
  788. )
  789. return bg_img
  790. def deal_pic_12(self):
  791. # 背景图
  792. bg_img = PictureProcessing(r"{}\12.jpg".format(self.root))
  793. return bg_img