detail_hongqingting2.py 36 KB

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