detail_xinnuo2.py 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729
  1. """
  2. 步骤:
  3. 1、整理需要处理的款号图-输出款号图文件夹
  4. 2、整理所有相关的图片作为素材图
  5. 3、按要求进行拼接
  6. """
  7. from ast import mod
  8. import os
  9. import settings
  10. from PIL import ImageFont
  11. import copy
  12. # from module.view_control.generate_goods_no_detail_pic.detail_generate_base import DetailBase
  13. # from module.view_control.generate_goods_no_detail_pic.pic_deal import PictureProcessing
  14. is_test_plugins = False
  15. try:
  16. is_test_plugins = settings.is_test_plugins
  17. except:
  18. is_test_plugins = False
  19. if is_test_plugins:
  20. from custom_plugins.plugins_mode.detail_generate_base import DetailBase
  21. from custom_plugins.plugins_mode.pic_deal import PictureProcessing
  22. else:
  23. from plugins_mode.detail_generate_base import DetailBase
  24. from plugins_mode.pic_deal import PictureProcessing
  25. plugins_name = "详情模板"
  26. company_name_list = ["信诺"]
  27. template_name = "xinnuo-2"
  28. # "俯视", "侧视", "后跟", "鞋底", "内里" 组合,组合2
  29. class DetailPicGet(DetailBase):
  30. need_view = ["俯视", "侧视", "后跟", "鞋底", "内里","组合","组合2"]
  31. root = r"{}\resources\detail_temp\xinnuo\2".format(os.getcwd())
  32. def __init__(
  33. self,
  34. goods_no,
  35. goods_no_value: dict,
  36. out_put_dir,
  37. windows=None,
  38. test=False,
  39. excel_data=None,
  40. assigned_page_list=None,
  41. ):
  42. super().__init__(
  43. goods_no,
  44. goods_no_value,
  45. out_put_dir,
  46. windows=windows,
  47. excel_data=excel_data,
  48. assigned_page_list=assigned_page_list,
  49. )
  50. self.template_name = template_name
  51. self.root = r"{}\resources\detail_temp\xinnuo\2".format(os.getcwd())
  52. print("run xinnuo-2 ")
  53. self.base_bg_color = (255, 255, 255)
  54. self.base_bg_color_2 = (244, 242, 243)
  55. self.deal_pic_func_list = [
  56. self.deal_pic_1,
  57. self.deal_pic_2,
  58. self.deal_pic_3,
  59. self.deal_pic_4,
  60. self.deal_pic_5,
  61. self.deal_pic_6,
  62. self.deal_pic_7,
  63. self.deal_pic_8,
  64. self.deal_pic_10,
  65. self.deal_pic_11,
  66. self.deal_pic_13,
  67. ]
  68. if test:
  69. # pp = self.generate_font_list_to_pic()
  70. # pp.im.save(r"C:\Users\gymmc\Desktop\细节图示例/字号.png")
  71. # for k, v in self.goods_no_value.items():
  72. # print(k, v)
  73. self.run_test()
  74. else:
  75. self.run_all()
  76. def run_test(self):
  77. detailed_images = []
  78. detailed_images.append(self.deal_pic_1())
  79. detailed_images.append(self.deal_pic_2())
  80. detailed_images.append(self.deal_pic_3())
  81. detailed_images.append(self.deal_pic_4())
  82. detailed_images.append(self.deal_pic_5())
  83. detailed_images.append(self.deal_pic_6())
  84. detailed_images.append(self.deal_pic_7())
  85. detailed_images.append(self.deal_pic_8())
  86. detailed_images.append(self.deal_pic_10())
  87. detailed_images.append(self.deal_pic_11())
  88. detailed_images.append(self.deal_pic_13())
  89. img = self.add_pic(detailed_images)
  90. img.save(r"{}/{}.jpg".format(self.out_put_dir, self.goods_no, format="JPEG"))
  91. img.show()
  92. # 标题文字展示
  93. def deal_pic_1(self):
  94. pp_bg = PictureProcessing(r"{}\1.jpg".format(self.root),1600)
  95. hover = PictureProcessing(r"{}\1hover.png".format(self.root),1600)
  96. goods_art_no_list = list(self.data.keys())
  97. pp_jpg_1, pp_png_1 = self.image_one_pic(
  98. return_orign=True,
  99. goods_art_no=goods_art_no_list[0],
  100. name="俯视",
  101. )
  102. if pp_jpg_1 != None and pp_png_1 != None:
  103. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg.width/1.2)
  104. pp_png_1 = pp_png_1.resize(value=pp_bg.width /1.2)
  105. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==False:
  106. pp_jpg_1 = pp_jpg_1.transpose()
  107. pp_png_1 = pp_png_1.transpose()
  108. pp_png_1_bg = PictureProcessing("RGBA", (pp_jpg_1.width*1.4, pp_jpg_1.width*1.4), (255,255,255,0))
  109. pp_png_1_bg = pp_png_1_bg.paste_img(
  110. top_img=pp_png_1,base="nc", value=(0, 0)
  111. )
  112. pp_png_1_bg = pp_png_1_bg.rotate(-45)
  113. pp_bg = pp_bg.paste_img(
  114. top_img=pp_png_1_bg,base="nc", value=(-270, 720)
  115. )
  116. key=0
  117. if len(goods_art_no_list)>1:
  118. key=1
  119. pp_jpg_1, pp_png_1 = self.image_one_pic(
  120. return_orign=True,
  121. goods_art_no=goods_art_no_list[key],
  122. name="俯视",
  123. )
  124. if pp_jpg_1 != None and pp_png_1 != None:
  125. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg.width/1.3)
  126. pp_png_1 = pp_png_1.resize(value=pp_bg.width /1.3)
  127. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==True:
  128. pp_jpg_1 = pp_jpg_1.transpose()
  129. pp_png_1 = pp_png_1.transpose()
  130. pp_png_1_bg = PictureProcessing("RGBA", (pp_jpg_1.width*1.4, pp_jpg_1.width*1.4), (255,255,255,0))
  131. pp_png_1_bg = pp_png_1_bg.paste_img(
  132. top_img=pp_png_1,base="nc", value=(0, 0)
  133. )
  134. pp_png_1_bg = pp_png_1_bg.rotate(45)
  135. pp_bg = pp_bg.paste_img(
  136. top_img=pp_png_1_bg,base="nc", value=(270, 350)
  137. )
  138. pp_bg = pp_bg.paste_img(
  139. top_img=hover, value=(129, 1186.5)
  140. )
  141. return pp_bg
  142. # 展示鞋头和后跟
  143. def deal_pic_2(self):
  144. pp_bg = PictureProcessing(r"{}\2.jpg".format(self.root), 1600)
  145. font = ImageFont.truetype(
  146. r"resources\ttf\puhui\Regular.ttf", 30
  147. ) # 设计理念title
  148. design_title = self.get_text_value("设计理念标题")
  149. design_text = self.get_text_value("设计理念")
  150. text_bg = PictureProcessing("RGBA", (pp_bg.width, 200), (255,255,255,0))
  151. text_bg = text_bg.get_text_image_advanced(
  152. value=(0, 0),
  153. font=font,
  154. text=design_title,
  155. align="center",
  156. spacing=20,
  157. fill=(68, 41, 34),
  158. return_mode="min_image",
  159. )
  160. pp_bg = pp_bg.paste_img(top_img=text_bg, base="nw", value=(134, 1232))
  161. font = ImageFont.truetype(
  162. r"resources\ttf\puhui\Regular.ttf", 24
  163. ) # 设计理念
  164. text_bg = PictureProcessing("RGBA", (pp_bg.width, 200), (255,255,255,0))
  165. text_bg = text_bg.get_text_image_advanced(
  166. value=(0, 0),
  167. font=font,
  168. text=design_text,
  169. align="center",
  170. spacing=20,
  171. fill=(166, 133, 116),
  172. return_mode="min_image",
  173. )
  174. pp_bg = pp_bg.paste_img(top_img=text_bg, base="nw", value=(134, 1284))
  175. goods_art_no_list = list(self.data.keys())
  176. pp_jpg_1, pp_png_1 = self.image_one_pic(
  177. return_orign=True,
  178. goods_art_no=goods_art_no_list[0],
  179. name="组合2",
  180. )
  181. if pp_jpg_1 == None:
  182. pp_jpg_1, pp_png_1 = self.image_one_pic(
  183. return_orign=True,
  184. goods_art_no=goods_art_no_list[0],
  185. name="组合",
  186. )
  187. if pp_png_1 != None and pp_jpg_1 != None:
  188. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==True:
  189. pp_jpg_1 = pp_jpg_1.transpose()
  190. pp_png_1 = pp_png_1.transpose()
  191. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg.width*0.8)
  192. pp_png_1 = pp_png_1.resize(value=pp_bg.width*0.8)
  193. pp_bg = pp_bg.to_overlay_pic_advance(
  194. top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(0, 100)
  195. )
  196. return pp_bg
  197. # 展示鞋头放大图
  198. def deal_pic_3(self):
  199. pp_bg = PictureProcessing(r"{}\3.jpg".format(self.root), 1600)
  200. goods_art_no_list = list(self.data.keys())
  201. pp_jpg_1, pp_png_1 = self.image_one_pic(
  202. return_orign=True,
  203. goods_art_no=goods_art_no_list[0],
  204. name="俯视",
  205. )
  206. if pp_jpg_1 != None and pp_png_1 != None:
  207. pp_jpg_1 = pp_jpg_1.resize(value=480)
  208. pp_png_1 = pp_png_1.resize(value=480)
  209. # pp_bg = pp_bg.paste_img(top_img=shoe_bg, value=(0, 0), base="nw")
  210. pp_bg = pp_bg.to_overlay_pic_advance(
  211. mode="pixel",
  212. top_img=pp_jpg_1,
  213. base="sw",
  214. value=(133, 267),
  215. top_png_img=pp_png_1,
  216. )
  217. font = ImageFont.truetype(
  218. r"resources\ttf\puhui\Medium.ttf", 24
  219. ) # 设计理念
  220. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24) # 设计理念
  221. xiemian = self.get_text_value("鞋面")
  222. xiedian = self.get_text_value("鞋垫")
  223. neili = self.get_text_value("内里")
  224. xiedi = self.get_text_value("鞋底")
  225. all_color_name = []
  226. for index, goods_art_no in enumerate(goods_art_no_list):
  227. color_name = self.goods_no_value["货号资料"][index]["颜色名称"]
  228. all_color_name.append(color_name)
  229. yanse = ""
  230. if len(all_color_name) >= 2:
  231. yanse = all_color_name[0] + "," + all_color_name[1]
  232. xiekuan = self.get_text_value("鞋宽")
  233. xiechang = self.get_text_value("鞋长")
  234. banggao = self.get_text_value("帮高")
  235. gengao = self.get_text_value("跟高")
  236. pp_bg.get_text_image_advanced(
  237. value=(246, 378),
  238. font=font,
  239. text="信诺",
  240. align="left",
  241. # anchor="ma",
  242. spacing=5,
  243. fill=(69, 40, 34),
  244. return_mode="image",
  245. margins=(0, 0, 0, 0),
  246. )
  247. pp_bg.get_text_image_advanced(
  248. value=(555, 378),
  249. font=font,
  250. text=xiemian,
  251. align="left",
  252. # anchor="ma",
  253. spacing=5,
  254. fill=(69, 40, 34),
  255. return_mode="image",
  256. margins=(0, 0, 0, 0),
  257. max_len_one_line=6
  258. )
  259. pp_bg.get_text_image_advanced(
  260. value=(555, 490),
  261. font=font,
  262. text=neili,
  263. align="left",
  264. # anchor="ma",
  265. spacing=5,
  266. fill=(69, 40, 34),
  267. return_mode="image",
  268. margins=(0, 0, 0, 0),
  269. max_len_one_line=6
  270. )
  271. pp_bg.get_text_image_advanced(
  272. value=(246, 600),
  273. font=font,
  274. text=xiedi,
  275. align="left",
  276. # anchor="ma",
  277. spacing=5,
  278. fill=(69, 40, 34),
  279. return_mode="image",
  280. margins=(0, 0, 0, 0),
  281. max_len_one_line=6
  282. )
  283. pp_bg.get_text_image_advanced(
  284. value=(246, 490),
  285. font=font,
  286. text=xiedian,
  287. align="left",
  288. # anchor="ma",
  289. spacing=5,
  290. fill=(69, 40, 34),
  291. return_mode="image",
  292. margins=(0, 0, 0, 0),
  293. max_len_one_line=6
  294. )
  295. pp_bg.get_text_image_advanced(
  296. value=(555, 600),
  297. font=font,
  298. text=yanse,
  299. align="left",
  300. # anchor="ma",
  301. spacing=5,
  302. fill=(69, 40, 34),
  303. return_mode="image",
  304. margins=(0, 0, 0, 0),
  305. )
  306. pp_bg.get_text_image_advanced(
  307. value=(153, 1142),
  308. font=font_hei,
  309. text=f"鞋宽\n{xiekuan}",
  310. align="left",
  311. # anchor="ma",
  312. spacing=5,
  313. fill=(69, 40, 34),
  314. return_mode="image",
  315. margins=(0, 0, 0, 0),
  316. )
  317. pp_bg.get_text_image_advanced(
  318. value=(644, 868),
  319. font=font_hei,
  320. text=f"帮高\n{banggao}",
  321. align="left",
  322. # anchor="ma",
  323. spacing=5,
  324. fill=(69, 40, 34),
  325. return_mode="image",
  326. margins=(0, 0, 0, 0),
  327. )
  328. pp_bg.get_text_image_advanced(
  329. value=(644, 948),
  330. font=font_hei,
  331. text=f"跟高\n{gengao}",
  332. align="left",
  333. # anchor="ma",
  334. spacing=5,
  335. fill=(69, 40, 34),
  336. return_mode="image",
  337. margins=(0, 0, 0, 0),
  338. )
  339. pp_bg.get_text_image_advanced(
  340. value=(437, 1123),
  341. font=font_hei,
  342. text=f"鞋长\n{xiechang}",
  343. align="left",
  344. # anchor="ma",
  345. spacing=5,
  346. fill=(69, 40, 34),
  347. return_mode="image",
  348. margins=(0, 0, 0, 0),
  349. )
  350. return pp_bg
  351. # 展示后跟放大图
  352. def deal_pic_4(self):
  353. detailed_images = []
  354. pp_bg = PictureProcessing(r"{}\4.jpg".format(self.root))
  355. pp_bg_circle = PictureProcessing(r"{}\bg_circle.png".format(self.root))
  356. goods_art_no_list = list(self.data.keys())
  357. all_color_name = []
  358. bg_color = (254, 249, 245)
  359. text_color = (70, 48, 41)
  360. font = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 25)
  361. goods_art_images = []
  362. total_height = 0
  363. for index, goods_art_no in enumerate(goods_art_no_list):
  364. pp_jpg,pp_png = self.image_one_pic(
  365. goods_art_no=goods_art_no,
  366. name="侧视",
  367. return_orign=True,
  368. )
  369. if pp_jpg is None:
  370. continue
  371. pp_jpg = pp_jpg.resize(value=pp_bg.width / 2.5)
  372. pp_png = pp_png.resize(value=pp_bg.width / 2.5)
  373. color_name = self.goods_no_value["货号资料"][index]["颜色名称"]
  374. all_color_name.append(color_name)
  375. text_bg = PictureProcessing("RGBA", (pp_jpg.width, 50), (255,255,255,0))
  376. text_bg = text_bg.get_text_image_advanced(
  377. value=(0, 0),
  378. font=font,
  379. text="● {}".format(color_name),
  380. # text="{}".format(color_name),
  381. align="center",
  382. # anchor="mm",
  383. spacing=5,
  384. fill=text_color,
  385. return_mode="image",
  386. margins=(0, 0, 0, 0),
  387. )
  388. _bg = PictureProcessing(
  389. "RGB",
  390. (pp_bg.width / 2, pp_jpg.height+200),
  391. bg_color,
  392. )
  393. pp_bg_circle = pp_bg_circle.resize(value=_bg.width/2)
  394. _bg.paste_img(top_img=pp_bg_circle, base="center")
  395. if (index+1) == 1:
  396. total_height += _bg.height
  397. if (index + 1) % 2 != 0 and (index + 1) != 1:
  398. total_height += _bg.height
  399. _bg = _bg.to_overlay_pic_advance(top_img=pp_jpg,top_png_img=pp_png, base="center")
  400. _bg = _bg.paste_img(
  401. top_img=text_bg, value=(pp_jpg.width / 2, pp_jpg.height+150)
  402. )
  403. goods_art_images.append(_bg)
  404. rows = 2
  405. shoes_bg = PictureProcessing(
  406. ).horizontal_distribution(
  407. pp_list=goods_art_images,
  408. bg_width=pp_bg.width,
  409. margins=(0, 0, 0, 0),
  410. line_spacing=0,
  411. number_per_row=rows,
  412. )
  413. main_bg = PictureProcessing(
  414. "RGB",
  415. (pp_bg.width, total_height),
  416. bg_color,
  417. )
  418. main_bg.paste_img(top_img=shoes_bg)
  419. detailed_images.append(main_bg)
  420. return PictureProcessing(im=self.add_pic(detailed_images))
  421. return pp_bg
  422. # 展示后跟细节卡片
  423. def deal_pic_5(self):
  424. pp_bg = PictureProcessing(r"{}\5.jpg".format(self.root))
  425. return pp_bg
  426. # "心动"设计亮点,展示旋转的侧视图
  427. def deal_pic_6(self):
  428. pp_bg = PictureProcessing(r"{}\6.jpg".format(self.root))
  429. goods_art_no_list = list(self.data.keys())
  430. goods_art = goods_art_no_list[0]
  431. pp_jpg_1, pp_png_1 = self.image_one_pic(
  432. return_orign=True,
  433. goods_art_no=goods_art,
  434. name="侧视",
  435. )
  436. if pp_jpg_1 != None and pp_png_1 != None:
  437. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==True:
  438. pp_jpg_1 = pp_jpg_1.transpose()
  439. pp_png_1 = pp_png_1.transpose()
  440. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg.width*1.5)
  441. pp_png_1 = pp_png_1.resize(value=pp_bg.width*1.5)
  442. # pp_bg = pp_bg.paste_img(top_img=shoe_bg, value=(0, 0), base="nw")
  443. # water = PictureProcessing(r"{}\6water2.png".format(self.root))
  444. #
  445. # pp_png_1.paste_img(top_img=water, base="cc", value=(0, 0))
  446. pp_bg = pp_bg.to_overlay_pic_advance(
  447. mode="pixel",
  448. top_img=pp_jpg_1,
  449. base="sw",
  450. value=(50, 200),
  451. top_png_img=pp_png_1,
  452. )
  453. return pp_bg
  454. # 产品展示,帮面等等
  455. def deal_pic_7(self):
  456. pp_bg = PictureProcessing(r"{}\7.jpg".format(self.root))
  457. piao = PictureProcessing(r"{}\7piao.png".format(self.root))
  458. goods_art_no_list = list(self.data.keys())
  459. pp_jpg_1, pp_png_1 = self.image_one_pic(
  460. return_orign=True,
  461. goods_art_no=goods_art_no_list[0],
  462. name="俯视",
  463. )
  464. if pp_jpg_1 != None and pp_png_1 != None:
  465. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg.width/1)
  466. pp_png_1 = pp_png_1.resize(value=pp_bg.width /1)
  467. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==False:
  468. pp_jpg_1 = pp_jpg_1.transpose()
  469. pp_png_1 = pp_png_1.transpose()
  470. pp_png_1_bg = PictureProcessing("RGBA", (pp_jpg_1.width*1.45, pp_jpg_1.width*1.45), (255,255,255,0))
  471. pp_png_1_bg = pp_png_1_bg.paste_img(
  472. top_img=pp_png_1,base="nc", value=(0, 0)
  473. )
  474. pp_png_1_bg = pp_png_1_bg.rotate(-45)
  475. pp_bg = pp_bg.paste_img(
  476. top_img=pp_png_1_bg,base="cc", value=(-200, 340)
  477. )
  478. pp_bg = pp_bg.paste_img(
  479. top_img=piao, value=(50, 814)
  480. )
  481. return pp_bg
  482. # 添加尺码表
  483. def deal_pic_8(self):
  484. detailed_images = []
  485. image_path = r"{}\8.jpg".format(self.root)
  486. pp_bg = PictureProcessing(image_path,1600)
  487. detailed_images.append(pp_bg)
  488. # radius_top = PictureProcessing(
  489. # "RGB", (pp_bg.width * 0.75, 40), (242,235, 227)
  490. radius_top = PictureProcessing(
  491. "RGBA", (pp_bg.width * 0.75, 40), (255, 249, 243)
  492. ).radius(value=30, circular_pos=(1, 1, 0, 0))
  493. radius_top_bg = PictureProcessing("RGB", (pp_bg.width, 40), (255, 249, 243))
  494. image_list = ["俯视","侧视","后跟"]
  495. goods_art_no_list = list(self.data.keys())
  496. for i in range(0,len(goods_art_no_list)):
  497. for item in image_list:
  498. pp_bg_background = PictureProcessing(
  499. "RGB", (pp_bg.width, 800), (255, 249, 243)
  500. )
  501. pp_bg_radius = PictureProcessing(
  502. "RGB", (pp_bg.width * 0.85, 800), (242,235, 227)
  503. )
  504. radius_top_bg = radius_top_bg.paste_img(top_img=radius_top, base="cc")
  505. detailed_images.append(radius_top_bg)
  506. goods_art_no_list = list(self.data.keys())
  507. pp_jpg_1, pp_png_1 = self.image_one_pic(
  508. return_orign=True,
  509. goods_art_no=goods_art_no_list[i],
  510. name=item,
  511. )
  512. if item =="俯视":
  513. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im):
  514. pp_jpg_1 = pp_jpg_1.transpose()
  515. pp_png_1 = pp_png_1.transpose()
  516. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_radius.width / 1.3)
  517. pp_png_1 = pp_png_1.resize(value=pp_bg_radius.width / 1.3)
  518. pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
  519. top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(-50, 0)
  520. )
  521. pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
  522. top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(50, 60)
  523. )
  524. if item == "侧视":
  525. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im):
  526. pp_jpg_1 = pp_jpg_1.transpose()
  527. pp_png_1 = pp_png_1.transpose()
  528. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_radius.width / 1.3)
  529. pp_png_1 = pp_png_1.resize(value=pp_bg_radius.width / 1.3)
  530. pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
  531. top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(60, 0)
  532. )
  533. pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
  534. top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(-60, 0)
  535. )
  536. if item == "后跟":
  537. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_radius.width / 2.3)
  538. pp_png_1 = pp_png_1.resize(value=pp_bg_radius.width / 2.3)
  539. pp_jpg_1 = pp_jpg_1.transpose()
  540. pp_png_1 = pp_png_1.transpose()
  541. pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
  542. top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(130, 0)
  543. )
  544. pp_jpg_1 = pp_jpg_1.transpose()
  545. pp_png_1 = pp_png_1.transpose()
  546. pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
  547. top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(-130, 0)
  548. )
  549. pp_bg_radius = pp_bg_radius.radius(value=30, circular_pos=(1, 1, 1, 1))
  550. pp_bg_background.paste_img(top_img=pp_bg_radius, base="cc", value=(0, 0))
  551. detailed_images.append(pp_bg_background)
  552. radius_bottom = PictureProcessing(
  553. "RGB", (pp_bg.width * 0.75, 40), ((255, 249, 243))
  554. ).radius(value=30, circular_pos=(0, 0, 1, 1))
  555. radius_bottom_bg = PictureProcessing("RGB", (pp_bg.width, 40), (255, 249, 243))
  556. radius_bottom_bg = radius_bottom_bg.paste_img(top_img=radius_bottom, base="cc")
  557. detailed_images.append(radius_bottom_bg)
  558. detailed_images.append(
  559. PictureProcessing("RGB", (pp_bg.width, 50), (255, 249, 243))
  560. )
  561. return self.pp_pic_subsection(
  562. PictureProcessing(im=self.add_pic(detailed_images))
  563. )
  564. def deal_pic_10(self):
  565. pp_bg = PictureProcessing(r"{}\10.jpg".format(self.root))
  566. return pp_bg
  567. def deal_pic_11(self):
  568. detailed_images = []
  569. image_path = r"{}\11.jpg".format(self.root)
  570. pp_bg = PictureProcessing(image_path,1600)
  571. goods_art_no_list = list(self.data.keys())
  572. text_color = (83, 59, 46)
  573. font = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 28)
  574. for i in range(0,len(goods_art_no_list)):
  575. pp_bg_new = copy.deepcopy(pp_bg)
  576. color_name = self.goods_no_value["货号资料"][i]["颜色名称"]
  577. text_bg = PictureProcessing("RGBA", (100, 50), (255,255,255,0))
  578. text_bg = text_bg.get_text_image_advanced(
  579. value=(0, 0),
  580. font=font,
  581. text="● {}".format(color_name),
  582. align="left",
  583. # anchor="mm",
  584. spacing=5,
  585. fill=text_color,
  586. return_mode="image",
  587. margins=(0, 0, 0, 0),
  588. )
  589. pp_bg_new = pp_bg_new.paste_img(
  590. top_img=text_bg, value=(180, 70)
  591. )
  592. pp_jpg_1, pp_png_1 = self.image_one_pic(
  593. return_orign=True,
  594. goods_art_no=goods_art_no_list[i],
  595. name='俯视',
  596. )
  597. if pp_jpg_1 != None and pp_png_1 != None:
  598. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im):
  599. pp_jpg_1 = pp_jpg_1.transpose()
  600. pp_png_1 = pp_png_1.transpose()
  601. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_new.width / 1.7)
  602. pp_png_1 = pp_png_1.resize(value=pp_bg_new.width / 1.7)
  603. pp_bg_new = pp_bg_new.to_overlay_pic_advance(
  604. top_img=pp_jpg_1, top_png_img=pp_png_1, base="nc", value=(-50, 70)
  605. )
  606. pp_bg_new = pp_bg_new.to_overlay_pic_advance(
  607. top_img=pp_jpg_1, top_png_img=pp_png_1, base="nc", value=(50, 130)
  608. )
  609. pp_jpg_1, pp_png_1 = self.image_one_pic(
  610. return_orign=True,
  611. goods_art_no=goods_art_no_list[i],
  612. name='侧视',
  613. )
  614. if pp_jpg_1 != None and pp_png_1 != None:
  615. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im):
  616. pp_jpg_1 = pp_jpg_1.transpose()
  617. pp_png_1 = pp_png_1.transpose()
  618. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_new.width / 1.7)
  619. pp_png_1 = pp_png_1.resize(value=pp_bg_new.width / 1.7)
  620. pp_bg_new = pp_bg_new.to_overlay_pic_advance(
  621. top_img=pp_jpg_1, top_png_img=pp_png_1, base="nc", value=(0, 525)
  622. )
  623. pp_jpg_1, pp_png_1 = self.image_one_pic(
  624. return_orign=True,
  625. goods_art_no=goods_art_no_list[i],
  626. name='内里',
  627. )
  628. if pp_jpg_1 != None and pp_png_1 != None:
  629. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==True:
  630. pp_jpg_1 = pp_jpg_1.transpose()
  631. pp_png_1 = pp_png_1.transpose()
  632. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_new.width / 2)
  633. pp_png_1 = pp_png_1.resize(value=pp_bg_new.width / 2)
  634. pp_bg_new = pp_bg_new.to_overlay_pic_advance(
  635. top_img=pp_jpg_1, top_png_img=pp_png_1, base="nc", value=(-pp_bg_new.width/4, 975)
  636. )
  637. pp_jpg_1, pp_png_1 = self.image_one_pic(
  638. return_orign=True,
  639. goods_art_no=goods_art_no_list[i],
  640. name='鞋底',
  641. )
  642. if pp_jpg_1 != None and pp_png_1 != None:
  643. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==False:
  644. pp_jpg_1 = pp_jpg_1.transpose()
  645. pp_png_1 = pp_png_1.transpose()
  646. pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_new.width / 2)
  647. pp_png_1 = pp_png_1.resize(value=pp_bg_new.width / 2)
  648. pp_bg_new = pp_bg_new.to_overlay_pic_advance(
  649. top_img=pp_jpg_1, top_png_img=pp_png_1, base="nc", value=(pp_bg_new.width/4, 975)
  650. )
  651. detailed_images.append(pp_bg_new)
  652. # if i < len(goods_art_no_list) - 1:
  653. margin_bottom=PictureProcessing("RGB", (pp_bg.width, 130), (255, 249, 243))
  654. detailed_images.append(margin_bottom)
  655. return self.pp_pic_subsection(
  656. PictureProcessing(im=self.add_pic(detailed_images))
  657. )
  658. def deal_pic_13(self):
  659. pp_bg = PictureProcessing(r"{}\13.jpg".format(self.root))
  660. return pp_bg
  661. if __name__ == "__main__":
  662. d = DetailPicGet(
  663. goods_no="test",
  664. goods_no_value={},
  665. out_put_dir="./output/xinnuo-2",
  666. test=True,
  667. )
  668. d.run_test()