detail_hongqingting3.py 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057
  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 = "hongqingting-3"
  27. class DetailPicGet(DetailBase):
  28. need_view = ["俯视", "侧视", "后跟", "鞋底", "内里"]
  29. root = r"{}\resources\detail_temp\hongqingting-show\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-show\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("出品年") or "2025S/S"
  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("主标题") or "(气质简约包头凉鞋)"
  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("副标题") or "气 质 亮 眼 | 4 C M 显 高 | 柔 软 垫 脚"
  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. ph=pp_png_1.height
  107. pw=pp_png_1.width
  108. if (ph/pw)>0.8:
  109. aheight =600
  110. # 等比计算目标宽度
  111. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  112. else:
  113. aheight =450
  114. # 等比计算目标宽度
  115. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  116. pp_png_1 = pp_png_1.resize(value=awidth)
  117. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  118. #
  119. # aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  120. # pp_png_1 = aaa_img.rotate(0)
  121. bg_img = bg_img.to_overlay_pic_advance(
  122. mode="pixel",
  123. top_img=pp_jpg_1,
  124. base="cn",
  125. value=(-200, round(bg_img.height*0.65)),
  126. top_png_img=pp_png_1,
  127. )
  128. pp_jpg_2, pp_png_2 = self.image_one_pic(
  129. return_orign=True,
  130. goods_art_no=goods_art_no_list[0],
  131. name="俯视",
  132. )
  133. if self.check_shoe_is_right_by_pixel(im=pp_png_2.im)== False:
  134. pp_png_2 = pp_png_2.transpose()
  135. pp_jpg_2 = pp_jpg_2.transpose()
  136. pp_png_2 = pp_png_2.resize(value=awidth)
  137. pp_jpg_2 = pp_jpg_2.resize(value=awidth)
  138. # aaa_img = PictureProcessing("RGBA", (pp_jpg_2.width*1.2, pp_jpg_2.height*1.2), (255,255,255,0))
  139. #
  140. # aaa_img = aaa_img.paste_img(top_img=pp_png_2,base="cc", value=(0, 0))
  141. #
  142. # pp_png_2 = aaa_img.rotate(0)
  143. bg_img = bg_img.to_overlay_pic_advance(
  144. mode="pixel",
  145. top_img=pp_jpg_2,
  146. base="cs",
  147. value=(200, 900),
  148. top_png_img=pp_png_2,
  149. )
  150. return bg_img
  151. def deal_pic_2(self):
  152. detailed_images = []
  153. goods_art_no_list = list(self.data.keys())
  154. # 背景图
  155. bg_img = PictureProcessing(r"{}\2.jpg".format(self.root))
  156. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 45)
  157. year = self.get_text_value("系列名") or "红蜻蜓2025SS云枕系列"
  158. bg_img.get_text_image_advanced(
  159. value=(740, 520),
  160. font=font_hei,
  161. text=year,
  162. align="left",
  163. # anchor="ma",
  164. spacing=5,
  165. fill=(75, 69, 107),
  166. return_mode="image",
  167. margins=(0, 0, 0, 0),
  168. )
  169. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  170. goods_art_no=goods_art_no_list[0],
  171. name="俯视",
  172. )
  173. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  174. pp_jpg_1 = pp_jpg_1.transpose()
  175. pp_png_1 = pp_png_1.transpose()
  176. pp_jpg_1 = pp_jpg_1.resize(value=round(bg_img.width*(850/bg_img.width)))
  177. pp_png_1 = pp_png_1.resize(value=round(bg_img.width*(850/bg_img.width)))
  178. pp_jpg_1=pp_jpg_1.rotate_advance(doge=-35,is_crop=False)
  179. pp_png_1=pp_png_1.rotate_advance(doge=-35,is_crop=False)
  180. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(0, 100))
  181. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  182. # return_orign=True,
  183. # goods_art_no=goods_art_no_list[0],
  184. # name="俯视",
  185. # )
  186. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==False:
  187. # pp_png_1 = pp_png_1.transpose()
  188. # pp_jpg_1 = pp_jpg_1.transpose()
  189. #
  190. # aaa_img = PictureProcessing("RGBA", (pp_jpg_1.width*1.2, pp_jpg_1.height*1.2), (255,255,255,0))
  191. #
  192. # pp_png_1 = pp_png_1.resize(value=850)
  193. # pp_jpg_1 = pp_jpg_1.resize(value=850)
  194. #
  195. # aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  196. #
  197. # pp_png_1 = aaa_img.rotate(-35)
  198. #
  199. # bg_img = bg_img.to_overlay_pic_advance(
  200. # mode="pixel",
  201. # top_img=pp_png_1,
  202. # base="cs",
  203. # value=(0, -100),
  204. # top_png_img=pp_png_1,
  205. # )
  206. detailed_images.append(bg_img)
  207. return PictureProcessing(im=self.add_pic(detailed_images))
  208. # return bg_img
  209. def deal_pic_3(self):
  210. # 背景图
  211. bg_img = PictureProcessing(r"{}\3.jpg".format(self.root))
  212. # sign_img = PictureProcessing(r"{}\3.png".format(self.root))
  213. # bg_img = bg_img.paste_img(top_img=sign_img,base="cc", value=(0, 0))
  214. return bg_img
  215. def deal_pic_4(self):
  216. detailed_images = []
  217. goods_art_no_list = list(self.data.keys())
  218. # 背景图
  219. bg_img = PictureProcessing(r"{}\4.jpg".format(self.root))
  220. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  221. goods_art_no=goods_art_no_list[0],
  222. name="后跟",
  223. )
  224. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  225. pp_jpg_1 = pp_jpg_1.transpose()
  226. pp_png_1 = pp_png_1.transpose()
  227. # pp_jpg_1 = pp_jpg_1.resize(value=850)
  228. # pp_png_1 = pp_png_1.resize(value=850)
  229. aheight =650
  230. # 等比计算目标宽度
  231. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  232. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  233. pp_png_1 = pp_png_1.resize(value=awidth)
  234. pp_jpg_1=pp_jpg_1.rotate_advance(doge=25,is_crop=False)
  235. pp_png_1=pp_png_1.rotate_advance(doge=25,is_crop=False)
  236. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(-250, -240))
  237. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  238. goods_art_no=goods_art_no_list[0],
  239. name="俯视",
  240. )
  241. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == True:
  242. pp_jpg_1 = pp_jpg_1.transpose()
  243. pp_png_1 = pp_png_1.transpose()
  244. pp_jpg_1 = pp_jpg_1.resize(value=round(bg_img.width*(800/bg_img.width)))
  245. pp_png_1 = pp_png_1.resize(value=round(bg_img.width*(800/bg_img.width)))
  246. pp_jpg_1=pp_jpg_1.rotate_advance(doge=30,is_crop=False)
  247. pp_png_1=pp_png_1.rotate_advance(doge=30,is_crop=False)
  248. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(220, -250))
  249. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  250. # return_orign=True,
  251. # goods_art_no=goods_art_no_list[0],
  252. # name="后跟",
  253. # )
  254. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== False:
  255. # pp_png_1 = pp_png_1.transpose()
  256. # aaa_img = PictureProcessing("RGBA", (pp_jpg_1.width*1.2, pp_jpg_1.height*1.2), (255,255,255,0))
  257. # pp_png_1 = pp_png_1.resize(value=850)
  258. # aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  259. # pp_png_1 = aaa_img.rotate(15)
  260. # bg_img = bg_img.to_overlay_pic_advance(
  261. # mode="pixel",
  262. # top_img=pp_png_1,
  263. # base="cs",
  264. # value=(-250, 300),
  265. # top_png_img=pp_png_1,
  266. # )
  267. # pp_jpg_2, pp_png_2 = self.image_one_pic(
  268. # return_orign=True,
  269. # goods_art_no=goods_art_no_list[0],
  270. # name="俯视",
  271. # )
  272. # if self.check_shoe_is_right_by_pixel(im=pp_png_2.im):
  273. # pp_png_2 = pp_png_2.transpose()
  274. # pp_png_2 = pp_png_2.resize(value=800)
  275. # aaa_img = PictureProcessing("RGBA", (pp_jpg_2.width*1.2, pp_jpg_2.height*1.2), (255,255,255,0))
  276. # aaa_img = aaa_img.paste_img(top_img=pp_png_2,base="cc", value=(0, 0))
  277. # pp_png_2 = aaa_img.rotate(15)
  278. # bg_img = bg_img.to_overlay_pic_advance(
  279. # mode="pixel",
  280. # top_img=pp_png_2,
  281. # base="cs",
  282. # value=(220, -450),
  283. # top_png_img=pp_png_2,
  284. # )
  285. detailed_images.append(bg_img)
  286. return PictureProcessing(im=self.add_pic(detailed_images))
  287. return bg_img
  288. def deal_pic_5(self):
  289. detailed_images = []
  290. goods_art_no_list = list(self.data.keys())
  291. # 背景图
  292. bg_img = PictureProcessing(r"{}\5.jpg".format(self.root))
  293. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  294. goods_art_no=goods_art_no_list[0],
  295. name="侧视",
  296. )
  297. pp_jpg_1 = pp_jpg_1.resize(value=round(bg_img.width*(850/bg_img.width)))
  298. pp_png_1 = pp_png_1.resize(value=round(bg_img.width*(850/bg_img.width)))
  299. pw=pp_png_1.width
  300. ph=pp_png_1.height
  301. pp_jpg_1=pp_jpg_1.rotate_advance(doge=22,is_crop=False)
  302. pp_png_1=pp_png_1.rotate_advance(doge=22,is_crop=False)
  303. if (ph/pw)>0.8:
  304. print(555555555551)
  305. print(ph/pw)
  306. posy=(-1)*round(bg_img.height*0.12)
  307. else:
  308. print(555555555552)
  309. posy=(-1)*round(bg_img.height*0.16)
  310. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(-50,posy ))
  311. detailed_images.append(bg_img)
  312. return PictureProcessing(im=self.add_pic(detailed_images))
  313. def deal_pic_6(self):
  314. if self.get_text_value("模特图"):
  315. try:
  316. hh_img = PictureProcessing(r"{}\6.jpg".format(self.root))
  317. mote_img = PictureProcessing(self.get_text_value("模特图"))
  318. mote_img = mote_img.resize(value=1400)
  319. bg_img = PictureProcessing("RGB", (hh_img.width, hh_img.height+mote_img.height), (255,255,255))
  320. bg_img = bg_img.paste_img(top_img=hh_img,base="nc", value=(0, 0))
  321. bg_img = bg_img.paste_img(top_img=mote_img,base="nc", value=(0, hh_img.height))
  322. return bg_img
  323. except:
  324. return
  325. else:
  326. return
  327. def deal_pic_7(self):
  328. if self.get_text_value("场景图"):
  329. try:
  330. hh_img = PictureProcessing(r"{}\7.jpg".format(self.root))
  331. mote_img = PictureProcessing(self.get_text_value("场景图"))
  332. mote_img = mote_img.resize(value=1400)
  333. bg_img = PictureProcessing("RGB", (hh_img.width, hh_img.height+mote_img.height), (255,255,255))
  334. bg_img = bg_img.paste_img(top_img=hh_img,base="nc", value=(0, 0))
  335. bg_img = bg_img.paste_img(top_img=mote_img,base="nc", value=(0, hh_img.height))
  336. return bg_img
  337. except:
  338. return
  339. else:
  340. return
  341. def deal_pic_8(self):
  342. # 背景图
  343. bg_img = PictureProcessing(r"{}\8.jpg".format(self.root))
  344. return bg_img
  345. def deal_pic_9(self):
  346. # 背景图
  347. bg_img = PictureProcessing(r"{}\9.jpg".format(self.root))
  348. return bg_img
  349. def deal_pic_10(self):
  350. goods_art_no_list = list(self.data.keys())
  351. # 背景图
  352. bg_img = PictureProcessing(r"{}\10.jpg".format(self.root))
  353. # 长宽示例
  354. pp_jpg_1, pp_png_1 = self.image_one_pic(
  355. return_orign=True,
  356. goods_art_no=goods_art_no_list[0],
  357. name="俯视",
  358. )
  359. if pp_jpg_1.height > pp_jpg_1.width:
  360. aheight =650
  361. # 等比计算目标宽度
  362. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  363. else:
  364. awidth=round(0.52*bg_img.width)
  365. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  366. pp_png_1 = pp_png_1.resize(value=awidth)
  367. bg_img = bg_img.to_overlay_pic_advance(
  368. mode="pixel",
  369. top_img=pp_jpg_1,
  370. base="cs",
  371. value=(-40, 1640),
  372. top_png_img=pp_png_1,
  373. )
  374. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24) # 设计理念
  375. xiemian = self.get_text_value("商品面料") or "底层牛剖层革\n面层合成革"
  376. neili = self.get_text_value("商品内里") or "布里"
  377. xiedian = self.get_text_value("鞋垫") or "猪垫"
  378. xiedi = self.get_text_value("商品鞋底") or "橡胶"
  379. bg_img.get_text_image_advanced(
  380. value=(302, 1648),
  381. font=font_hei,
  382. text=xiemian,
  383. align="left",
  384. # anchor="ma",
  385. spacing=5,
  386. fill=(74, 74, 74),
  387. return_mode="image",
  388. margins=(0, 0, 0, 0),
  389. )
  390. bg_img.get_text_image_advanced(
  391. value=(944, 1648),
  392. font=font_hei,
  393. text=neili,
  394. align="left",
  395. # anchor="ma",
  396. spacing=5,
  397. fill=(74, 74, 74),
  398. return_mode="image",
  399. margins=(0, 0, 0, 0),
  400. )
  401. bg_img.get_text_image_advanced(
  402. value=(302, 1900),
  403. font=font_hei,
  404. text=xiedian,
  405. align="left",
  406. # anchor="ma",
  407. spacing=5,
  408. fill=(74, 74, 74),
  409. return_mode="image",
  410. margins=(0, 0, 0, 0),
  411. )
  412. bg_img.get_text_image_advanced(
  413. value=(944, 1900),
  414. font=font_hei,
  415. text=xiedi,
  416. align="left",
  417. # anchor="ma",
  418. spacing=5,
  419. fill=(74, 74, 74),
  420. return_mode="image",
  421. margins=(0, 0, 0, 0),
  422. )
  423. itemNo = self.goods_no_value["货号资料"][0]["货号"]
  424. bg_img.get_text_image_advanced(
  425. value=(302, 2172),
  426. font=font_hei,
  427. text=itemNo,
  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. xiekuan = self.get_text_value("鞋宽") or "10.4CM"
  436. xiechang = self.get_text_value("鞋长") or "26.2CM"
  437. gengao = self.get_text_value("跟高") or "4CM"
  438. bg_img.get_text_image_advanced(
  439. value=(223, 894),
  440. font=font_hei,
  441. text="鞋宽"+xiekuan,
  442. align="left",
  443. # anchor="ma",
  444. spacing=5,
  445. fill=(74, 74, 74),
  446. return_mode="image",
  447. margins=(0, 0, 0, 0),
  448. )
  449. bg_img.get_text_image_advanced(
  450. value=(585, 1269),
  451. font=font_hei,
  452. text="鞋长"+xiechang,
  453. align="left",
  454. # anchor="ma",
  455. spacing=5,
  456. fill=(74, 74, 74),
  457. return_mode="image",
  458. margins=(0, 0, 0, 0),
  459. )
  460. bg_img.get_text_image_advanced(
  461. value=(1089, 1014),
  462. font=font_hei,
  463. text="跟高"+gengao,
  464. align="left",
  465. # anchor="ma",
  466. spacing=5,
  467. fill=(74, 74, 74),
  468. return_mode="image",
  469. margins=(0, 0, 0, 0),
  470. )
  471. # 底部三连鞋子带文字
  472. # font_main = ImageFont.truetype(
  473. # r"resources\ttf\puhui\Medium.ttf", 30
  474. # )
  475. #
  476. # length=len(goods_art_no_list)
  477. # if length==3:
  478. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  479. # return_orign=True,
  480. # goods_art_no=goods_art_no_list[0],
  481. # name="侧视",
  482. # )
  483. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  484. # pp_png_1 = pp_png_1.resize(value=250)
  485. # bg_img = bg_img.to_overlay_pic_advance(
  486. # mode="pixel",
  487. # top_img=pp_jpg_1,
  488. # base="cs",
  489. # value=(-320, 366),
  490. # top_png_img=pp_png_1,
  491. # )
  492. #
  493. # bg_img.get_text_image_advanced(
  494. # value=(345, 2520),
  495. # font=font_main,
  496. # text=self.goods_no_value["货号资料"][0]["颜色名称"],
  497. # align="center",
  498. # # anchor="ma",
  499. # spacing=5,
  500. # fill=(0, 0, 0),
  501. # return_mode="image",
  502. # margins=(0, 0, 0, 0),
  503. # )
  504. #
  505. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  506. # return_orign=True,
  507. # goods_art_no=goods_art_no_list[1],
  508. # name="侧视",
  509. # )
  510. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  511. # pp_png_1 = pp_png_1.resize(value=250)
  512. # bg_img = bg_img.to_overlay_pic_advance(
  513. # mode="pixel",
  514. # top_img=pp_jpg_1,
  515. # base="cs",
  516. # value=(0, 366),
  517. # top_png_img=pp_png_1,
  518. # )
  519. #
  520. # bg_img.get_text_image_advanced(
  521. # value=(655, 2520),
  522. # font=font_main,
  523. # text=self.goods_no_value["货号资料"][1]["颜色名称"],
  524. # align="center",
  525. # # anchor="ma",
  526. # spacing=5,
  527. # fill=(0, 0, 0),
  528. # return_mode="image",
  529. # margins=(0, 0, 0, 0),
  530. # )
  531. #
  532. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  533. # return_orign=True,
  534. # goods_art_no=goods_art_no_list[2],
  535. # name="侧视",
  536. # )
  537. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  538. # pp_png_1 = pp_png_1.resize(value=250)
  539. # bg_img = bg_img.to_overlay_pic_advance(
  540. # mode="pixel",
  541. # top_img=pp_jpg_1,
  542. # base="cs",
  543. # value=(320, 366),
  544. # top_png_img=pp_png_1,
  545. # )
  546. #
  547. # bg_img.get_text_image_advanced(
  548. # value=(990, 2520),
  549. # font=font_main,
  550. # text=self.goods_no_value["货号资料"][2]["颜色名称"],
  551. # align="center",
  552. # # anchor="ma",
  553. # spacing=5,
  554. # fill=(0, 0, 0),
  555. # return_mode="image",
  556. # margins=(0, 0, 0, 0),
  557. # )
  558. # elif length==2:
  559. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  560. # return_orign=True,
  561. # goods_art_no=goods_art_no_list[0],
  562. # name="侧视",
  563. # )
  564. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  565. # pp_png_1 = pp_png_1.resize(value=250)
  566. # bg_img = bg_img.to_overlay_pic_advance(
  567. # mode="pixel",
  568. # top_img=pp_jpg_1,
  569. # base="cs",
  570. # value=(-320, 366),
  571. # top_png_img=pp_png_1,
  572. # )
  573. #
  574. # bg_img.get_text_image_advanced(
  575. # value=(345, 2520),
  576. # font=font_main,
  577. # text=self.goods_no_value["货号资料"][0]["颜色名称"],
  578. # align="center",
  579. # # anchor="ma",
  580. # spacing=5,
  581. # fill=(0, 0, 0),
  582. # return_mode="image",
  583. # margins=(0, 0, 0, 0),
  584. # )
  585. #
  586. #
  587. #
  588. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  589. # return_orign=True,
  590. # goods_art_no=goods_art_no_list[1],
  591. # name="侧视",
  592. # )
  593. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  594. # pp_png_1 = pp_png_1.resize(value=250)
  595. # bg_img = bg_img.to_overlay_pic_advance(
  596. # mode="pixel",
  597. # top_img=pp_jpg_1,
  598. # base="cs",
  599. # value=(320, 366),
  600. # top_png_img=pp_png_1,
  601. # )
  602. #
  603. # bg_img.get_text_image_advanced(
  604. # value=(990, 2520),
  605. # font=font_main,
  606. # text=self.goods_no_value["货号资料"][1]["颜色名称"],
  607. # align="center",
  608. # # anchor="ma",
  609. # spacing=5,
  610. # fill=(0, 0, 0),
  611. # return_mode="image",
  612. # margins=(0, 0, 0, 0),
  613. # )
  614. # elif length==1:
  615. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  616. # return_orign=True,
  617. # goods_art_no=goods_art_no_list[1],
  618. # name="侧视",
  619. # )
  620. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  621. # pp_png_1 = pp_png_1.resize(value=250)
  622. # bg_img = bg_img.to_overlay_pic_advance(
  623. # mode="pixel",
  624. # top_img=pp_jpg_1,
  625. # base="cs",
  626. # value=(0, 366),
  627. # top_png_img=pp_png_1,
  628. # )
  629. #
  630. # bg_img.get_text_image_advanced(
  631. # value=(655, 2520),
  632. # font=font_main,
  633. # text=self.goods_no_value["货号资料"][1]["颜色名称"],
  634. # align="center",
  635. # # anchor="ma",
  636. # spacing=5,
  637. # fill=(0, 0, 0),
  638. # return_mode="image",
  639. # margins=(0, 0, 0, 0),
  640. # )
  641. font_2 = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 34) # 颜色名称
  642. color_pic_list_1 = []
  643. for goods_art_no_dict in self.goods_no_value["货号资料"]:
  644. color_name = goods_art_no_dict["颜色名称"]
  645. goods_art_no = goods_art_no_dict["货号"]
  646. pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no,
  647. color_name="侧视",
  648. bg_color=(247, 247, 247))
  649. pp_jpg = pp_jpg.resize(value=390)
  650. pp_jpg = pp_jpg.paste_img_invert(
  651. top_img=PictureProcessing("RGBA", (pp_jpg.width, pp_jpg.height + 70), (255, 255, 255, 0)),
  652. base="nw"
  653. )
  654. text_image = bg_img.get_text_image_advanced(font=font_2,
  655. text="{}".format(color_name),
  656. fill=(0, 0, 0),
  657. return_mode="min_image")
  658. pp_jpg = pp_jpg.paste_img(top_img=text_image, base="sc", value=(0, 10))
  659. color_pic_list_1.append(pp_jpg)
  660. # 颜色列表进行等分展示
  661. all_color_pp = PictureProcessing().horizontal_distribution(color_pic_list_1, bg_width=1114,
  662. line_spacing=10,
  663. number_per_row=3)
  664. bg_img = bg_img.to_overlay_pic_advance(
  665. mode="pixel",
  666. top_img=all_color_pp,
  667. base="cs",
  668. value=(0, 250),
  669. top_png_img=all_color_pp,
  670. )
  671. return bg_img
  672. def deal_pic_11(self):
  673. goods_art_no_list = list(self.data.keys())
  674. # 背景图
  675. header_img = PictureProcessing(r"{}\11-1.jpg".format(self.root))
  676. bg_img = PictureProcessing("RGBA", (header_img.width, 3575), (255,255,255))
  677. # 贴顶部
  678. bg_img = bg_img.to_overlay_pic_advance(
  679. mode="pixel",
  680. top_img=header_img,
  681. base="nc",
  682. value=(0, 0),
  683. top_png_img=header_img,
  684. )
  685. # item1
  686. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  687. length=len(goods_art_no_list)
  688. if length==3:
  689. pp_jpg_1, pp_png_1 = self.image_one_pic(
  690. return_orign=True,
  691. goods_art_no=goods_art_no_list[2],
  692. name="俯视",
  693. )
  694. aheight =400
  695. # 等比计算目标宽度
  696. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  697. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  698. pp_png_1 = pp_png_1.resize(value=awidth)
  699. item_img = item_img.to_overlay_pic_advance(
  700. mode="pixel",
  701. top_img=pp_jpg_1,
  702. base="cs",
  703. value=(-60, 300),
  704. top_png_img=pp_png_1,
  705. )
  706. if length>=2:
  707. pp_jpg_1, pp_png_1 = self.image_one_pic(
  708. return_orign=True,
  709. goods_art_no=goods_art_no_list[1],
  710. name="俯视",
  711. )
  712. aheight =400
  713. # 等比计算目标宽度
  714. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  715. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  716. pp_png_1 = pp_png_1.resize(value=awidth)
  717. item_img = item_img.to_overlay_pic_advance(
  718. mode="pixel",
  719. top_img=pp_jpg_1,
  720. base="cs",
  721. value=(0, 260),
  722. top_png_img=pp_png_1,
  723. )
  724. pp_jpg_1, pp_png_1 = self.image_one_pic(
  725. return_orign=True,
  726. goods_art_no=goods_art_no_list[0],
  727. name="俯视",
  728. )
  729. aheight =400
  730. # 等比计算目标宽度
  731. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  732. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  733. pp_png_1 = pp_png_1.resize(value=awidth)
  734. item_img = item_img.to_overlay_pic_advance(
  735. mode="pixel",
  736. top_img=pp_jpg_1,
  737. base="cs",
  738. value=(60, 220),
  739. top_png_img=pp_png_1,
  740. )
  741. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 40)
  742. item_img.get_text_image_advanced(
  743. value=(520, 600),
  744. font=font_hei,
  745. text="正面45°/FRONT45°",
  746. align="left",
  747. # anchor="ma",
  748. spacing=5,
  749. fill=(0, 0, 0),
  750. return_mode="image",
  751. margins=(0, 0, 0, 0),
  752. )
  753. bg_img = bg_img.to_overlay_pic_advance(
  754. mode="pixel",
  755. top_img=item_img,
  756. base="nc",
  757. value=(0, 534),
  758. top_png_img=item_img,
  759. )
  760. # item2
  761. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  762. pp_jpg_1, pp_png_1 = self.image_one_pic(
  763. return_orign=True,
  764. goods_art_no=goods_art_no_list[0],
  765. name="后跟",
  766. )
  767. aheight =400
  768. # 等比计算目标宽度
  769. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  770. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  771. pp_png_1 = pp_png_1.resize(value=awidth)
  772. item_img = item_img.to_overlay_pic_advance(
  773. mode="pixel",
  774. top_img=pp_jpg_1,
  775. base="cs",
  776. value=(0, 240),
  777. top_png_img=pp_png_1,
  778. )
  779. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  780. # return_orign=True,
  781. # goods_art_no=goods_art_no_list[0],
  782. # name="后跟",
  783. # )
  784. # aheight =450
  785. # # 等比计算目标宽度
  786. # awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  787. # pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  788. # pp_png_1 = pp_png_1.resize(value=awidth)
  789. # item_img = item_img.to_overlay_pic_advance(
  790. # mode="pixel",
  791. # top_img=pp_jpg_1,
  792. # base="cs",
  793. # value=(-60, 220),
  794. # top_png_img=pp_png_1,
  795. # )
  796. item_img.get_text_image_advanced(
  797. value=(520, 600),
  798. font=font_hei,
  799. text="背面45°/BACK45°",
  800. align="left",
  801. # anchor="ma",
  802. spacing=5,
  803. fill=(50, 50, 50),
  804. return_mode="image",
  805. margins=(0, 0, 0, 0),
  806. )
  807. bg_img = bg_img.to_overlay_pic_advance(
  808. mode="pixel",
  809. top_img=item_img,
  810. base="nc",
  811. value=(0, 534+760),
  812. top_png_img=item_img,
  813. )
  814. # item3
  815. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  816. pp_jpg_1, pp_png_1 = self.image_one_pic(
  817. return_orign=True,
  818. goods_art_no=goods_art_no_list[0],
  819. name="侧视",
  820. )
  821. aheight =350
  822. # 等比计算目标宽度
  823. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  824. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  825. pp_png_1 = pp_png_1.resize(value=awidth)
  826. item_img = item_img.to_overlay_pic_advance(
  827. mode="pixel",
  828. top_img=pp_jpg_1,
  829. base="cs",
  830. value=(0, 220),
  831. top_png_img=pp_png_1,
  832. )
  833. item_img.get_text_image_advanced(
  834. value=(600, 600),
  835. font=font_hei,
  836. text="侧面/SIDE",
  837. align="left",
  838. # anchor="ma",
  839. spacing=5,
  840. fill=(50, 50, 50),
  841. return_mode="image",
  842. margins=(0, 0, 0, 0),
  843. )
  844. bg_img = bg_img.to_overlay_pic_advance(
  845. mode="pixel",
  846. top_img=item_img,
  847. base="nc",
  848. value=(0, 534+760*2),
  849. top_png_img=item_img,
  850. )
  851. # item4
  852. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  853. pp_jpg_1, pp_png_1 = self.image_one_pic(
  854. return_orign=True,
  855. goods_art_no=goods_art_no_list[0],
  856. name="内里",
  857. )
  858. awidth = 200
  859. aheight = int(pp_jpg_1.width * awidth / pp_jpg_1.height)
  860. pp_jpg_1 = pp_jpg_1.resize(value=aheight)
  861. pp_png_1 = pp_png_1.resize(value=aheight)
  862. ty=0
  863. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  864. pp_jpg_1 = pp_jpg_1.transpose()
  865. pp_png_1 = pp_png_1.transpose()
  866. ty=1
  867. pp_jpg_1=pp_jpg_1.rotate_advance(doge=90,is_crop=False)
  868. pp_png_1=pp_png_1.rotate_advance(doge=90,is_crop=False)
  869. if ty==1:
  870. pp_jpg_1 = pp_jpg_1.transpose()
  871. pp_png_1 = pp_png_1.transpose()
  872. item_img = item_img.to_overlay_pic_advance(
  873. mode="pixel",
  874. top_img=pp_png_1,
  875. base="cs",
  876. value=(0, -70),
  877. top_png_img=pp_png_1,
  878. )
  879. # pp_jpg_1 = pp_jpg_1.transpose()
  880. # pp_png_1 = pp_png_1.transpose()
  881. # item_img = item_img.to_overlay_pic_advance(
  882. # mode="pixel",
  883. # top_img=pp_png_1,
  884. # base="cs",
  885. # value=(120, -50),
  886. # top_png_img=pp_png_1,
  887. # )
  888. item_img.get_text_image_advanced(
  889. value=(600, 600),
  890. font=font_hei,
  891. text="顶面/TOP",
  892. align="left",
  893. # anchor="ma",
  894. spacing=5,
  895. fill=(50, 50, 50),
  896. return_mode="image",
  897. margins=(0, 0, 0, 0),
  898. )
  899. bg_img = bg_img.to_overlay_pic_advance(
  900. mode="pixel",
  901. top_img=item_img,
  902. base="nc",
  903. value=(0, 534+760*3),
  904. top_png_img=item_img,
  905. )
  906. return bg_img
  907. def deal_pic_12(self):
  908. goods_art_no_list = list(self.data.keys())
  909. # 背景图
  910. bg_img = PictureProcessing(r"{}\12.jpg".format(self.root))
  911. item_img = PictureProcessing("RGB", (510, 440), (247,247,247))
  912. bg_img = bg_img.to_overlay_pic_advance(
  913. mode="pixel",
  914. top_img=item_img,
  915. base="es",
  916. value=(190, 240),
  917. top_png_img=item_img,
  918. )
  919. # item4
  920. item_img = PictureProcessing("RGBA", (bg_img.width, 760), (255,255,255))
  921. pp_jpg_1, pp_png_1 = self.image_one_pic(
  922. return_orign=True,
  923. goods_art_no=goods_art_no_list[0],
  924. name="内里",
  925. )
  926. aheight =170
  927. # 等比计算目标宽度
  928. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  929. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  930. pp_png_1 = pp_png_1.resize(value=awidth)
  931. ty=0
  932. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  933. pp_jpg_1 = pp_jpg_1.transpose()
  934. pp_png_1 = pp_png_1.transpose()
  935. ty=1
  936. pp_jpg_1=pp_jpg_1.rotate_advance(doge=90,is_crop=False)
  937. pp_png_1=pp_png_1.rotate_advance(doge=90,is_crop=False)
  938. if ty==1:
  939. pp_jpg_1 = pp_jpg_1.transpose()
  940. pp_png_1 = pp_png_1.transpose()
  941. bg_img = bg_img.to_overlay_pic_advance(
  942. mode="pixel",
  943. top_img=pp_png_1,
  944. base="es",
  945. value=(-100-0,30),
  946. top_png_img=pp_png_1,
  947. )
  948. pp_jpg_1 = pp_jpg_1.transpose()
  949. pp_png_1 = pp_png_1.transpose()
  950. bg_img = bg_img.to_overlay_pic_advance(
  951. mode="pixel",
  952. top_img=pp_png_1,
  953. base="es",
  954. value=(100-0, 30),
  955. top_png_img=pp_png_1,
  956. )
  957. return bg_img