detail_hongqingting2.py 36 KB

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