detail_hongqingting2.py 40 KB

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