detail_hongqingting3.py 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927
  1. """
  2. 步骤:
  3. 1、整理需要处理的款号图-输出款号图文件夹
  4. 2、整理所有相关的图片作为素材图
  5. 3、按要求进行拼接
  6. """
  7. import os
  8. from PIL import ImageFont
  9. import sys
  10. import settings
  11. # from module.view_control.generate_goods_no_detail_pic.detail_generate_base import DetailBase
  12. # from module.view_control.generate_goods_no_detail_pic.pic_deal import PictureProcessing
  13. is_test_plugins = False
  14. try:
  15. is_test_plugins = settings.is_test_plugins
  16. except:
  17. is_test_plugins = False
  18. if is_test_plugins:
  19. from custom_plugins.plugins_mode.detail_generate_base import DetailBase
  20. from custom_plugins.plugins_mode.pic_deal import PictureProcessing
  21. else:
  22. from plugins_mode.detail_generate_base import DetailBase
  23. from plugins_mode.pic_deal import PictureProcessing
  24. plugins_name = "详情模板"
  25. company_name_list = ["惠利玛",]
  26. template_name = "hongqingting-3"
  27. class DetailPicGet(DetailBase):
  28. need_view = ["俯视", "侧视", "后跟", "鞋底", "内里"]
  29. root = r"{}\resources\detail_temp\hongqingting-show\3".format(os.getcwd())
  30. def __init__(self, goods_no, goods_no_value: dict, out_put_dir, windows=None, test=False, excel_data=None,
  31. assigned_page_list=None):
  32. super().__init__(goods_no, goods_no_value, out_put_dir, windows=windows, excel_data=excel_data,
  33. assigned_page_list=assigned_page_list)
  34. self.template_name = template_name
  35. self.root = r"{}\resources\detail_temp\hongqingting\3".format(os.getcwd())
  36. print("run hongqingt-3 ")
  37. self.base_bg_color = (228, 196, 147)
  38. bg_color = (246, 246, 246)
  39. self.image_init(bg_color)
  40. self.deal_pic_func_list = [
  41. self.deal_pic_1,
  42. self.deal_pic_2,
  43. # self.deal_pic_3,
  44. self.deal_pic_4,
  45. self.deal_pic_5,
  46. self.deal_pic_6,
  47. self.deal_pic_7,
  48. # self.deal_pic_8,
  49. # self.deal_pic_9,
  50. self.deal_pic_10,
  51. self.deal_pic_11,
  52. self.deal_pic_12
  53. ]
  54. self.run_all()
  55. def deal_pic_1(self):
  56. goods_art_no_list = list(self.data.keys())
  57. # 背景图
  58. bg_img = PictureProcessing(r"{}\1.jpg".format(self.root))
  59. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 40)
  60. year = self.get_text_value("出品年") or "2025S/S"
  61. bg_img.get_text_image_advanced(
  62. value=(620, 499),
  63. font=font_hei,
  64. text=year,
  65. align="left",
  66. # anchor="ma",
  67. spacing=5,
  68. fill=(255, 255, 255),
  69. return_mode="image",
  70. margins=(0, 0, 0, 0),
  71. )
  72. mtitle = self.get_text_value("主标题") or "(气质简约包头凉鞋)"
  73. bg_img.get_text_image_advanced(
  74. value=(510, 567),
  75. font=font_hei,
  76. text=mtitle,
  77. align="left",
  78. # anchor="ma",
  79. spacing=5,
  80. fill=(255, 255, 255),
  81. return_mode="image",
  82. margins=(0, 0, 0, 0),
  83. )
  84. stitle = self.get_text_value("副标题") or "气 质 亮 眼 | 4 C M 显 高 | 柔 软 垫 脚"
  85. bg_img.get_text_image_advanced(
  86. value=(300, 650),
  87. font=font_hei,
  88. text=stitle,
  89. align="left",
  90. # anchor="ma",
  91. spacing=15,
  92. fill=(255, 255, 255),
  93. return_mode="image",
  94. margins=(0, 0, 0, 0),
  95. )
  96. pp_jpg_1, pp_png_1 = self.image_one_pic(
  97. return_orign=True,
  98. goods_art_no=goods_art_no_list[0],
  99. name="俯视",
  100. )
  101. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im):
  102. pp_png_1 = pp_png_1.transpose()
  103. pp_jpg_1 = pp_jpg_1.transpose()
  104. # aaa_img = PictureProcessing("RGBA", (pp_jpg_1.width*1.2, pp_jpg_1.height*1.2), (255,255,255,0))
  105. #
  106. pp_png_1 = pp_png_1.resize(value=850)
  107. pp_jpg_1 = pp_jpg_1.resize(value=850)
  108. #
  109. # aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  110. # pp_png_1 = aaa_img.rotate(0)
  111. bg_img = bg_img.to_overlay_pic_advance(
  112. mode="pixel",
  113. top_img=pp_jpg_1,
  114. base="cs",
  115. value=(-200, 300),
  116. top_png_img=pp_png_1,
  117. )
  118. pp_jpg_2, pp_png_2 = self.image_one_pic(
  119. return_orign=True,
  120. goods_art_no=goods_art_no_list[0],
  121. name="俯视",
  122. )
  123. if self.check_shoe_is_right_by_pixel(im=pp_png_2.im)== False:
  124. pp_png_2 = pp_png_2.transpose()
  125. pp_jpg_2 = pp_jpg_2.transpose()
  126. pp_png_2 = pp_png_2.resize(value=850)
  127. pp_jpg_2 = pp_jpg_2.resize(value=850)
  128. # aaa_img = PictureProcessing("RGBA", (pp_jpg_2.width*1.2, pp_jpg_2.height*1.2), (255,255,255,0))
  129. #
  130. # aaa_img = aaa_img.paste_img(top_img=pp_png_2,base="cc", value=(0, 0))
  131. #
  132. # pp_png_2 = aaa_img.rotate(0)
  133. bg_img = bg_img.to_overlay_pic_advance(
  134. mode="pixel",
  135. top_img=pp_jpg_2,
  136. base="cs",
  137. value=(200, 850),
  138. top_png_img=pp_png_2,
  139. )
  140. return bg_img
  141. def deal_pic_2(self):
  142. detailed_images = []
  143. goods_art_no_list = list(self.data.keys())
  144. # 背景图
  145. bg_img = PictureProcessing(r"{}\2.jpg".format(self.root))
  146. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 45)
  147. year = self.get_text_value("系列名") or "红蜻蜓2025SS云枕系列"
  148. bg_img.get_text_image_advanced(
  149. value=(740, 520),
  150. font=font_hei,
  151. text=year,
  152. align="left",
  153. # anchor="ma",
  154. spacing=5,
  155. fill=(75, 69, 107),
  156. return_mode="image",
  157. margins=(0, 0, 0, 0),
  158. )
  159. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  160. goods_art_no=goods_art_no_list[0],
  161. name="俯视",
  162. )
  163. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  164. pp_jpg_1 = pp_jpg_1.transpose()
  165. pp_png_1 = pp_png_1.transpose()
  166. pp_jpg_1 = pp_jpg_1.resize(value=850)
  167. pp_png_1 = pp_png_1.resize(value=850)
  168. pp_jpg_1=pp_jpg_1.rotate_advance(doge=-35,is_crop=False)
  169. pp_png_1=pp_png_1.rotate_advance(doge=-35,is_crop=False)
  170. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(0, 100))
  171. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  172. # return_orign=True,
  173. # goods_art_no=goods_art_no_list[0],
  174. # name="俯视",
  175. # )
  176. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)==False:
  177. # pp_png_1 = pp_png_1.transpose()
  178. # pp_jpg_1 = pp_jpg_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. # pp_png_1 = pp_png_1.resize(value=850)
  183. # pp_jpg_1 = pp_jpg_1.resize(value=850)
  184. #
  185. # aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  186. #
  187. # pp_png_1 = aaa_img.rotate(-35)
  188. #
  189. # bg_img = bg_img.to_overlay_pic_advance(
  190. # mode="pixel",
  191. # top_img=pp_png_1,
  192. # base="cs",
  193. # value=(0, -100),
  194. # top_png_img=pp_png_1,
  195. # )
  196. detailed_images.append(bg_img)
  197. return PictureProcessing(im=self.add_pic(detailed_images))
  198. # return bg_img
  199. def deal_pic_3(self):
  200. # 背景图
  201. bg_img = PictureProcessing(r"{}\3.jpg".format(self.root))
  202. # sign_img = PictureProcessing(r"{}\3.png".format(self.root))
  203. # bg_img = bg_img.paste_img(top_img=sign_img,base="cc", value=(0, 0))
  204. return bg_img
  205. def deal_pic_4(self):
  206. detailed_images = []
  207. goods_art_no_list = list(self.data.keys())
  208. # 背景图
  209. bg_img = PictureProcessing(r"{}\4.jpg".format(self.root))
  210. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  211. goods_art_no=goods_art_no_list[0],
  212. name="后跟",
  213. )
  214. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  215. pp_jpg_1 = pp_jpg_1.transpose()
  216. pp_png_1 = pp_png_1.transpose()
  217. pp_jpg_1 = pp_jpg_1.resize(value=850)
  218. pp_png_1 = pp_png_1.resize(value=850)
  219. pp_jpg_1=pp_jpg_1.rotate_advance(doge=25,is_crop=False)
  220. pp_png_1=pp_png_1.rotate_advance(doge=25,is_crop=False)
  221. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(-250, -120))
  222. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  223. goods_art_no=goods_art_no_list[0],
  224. name="俯视",
  225. )
  226. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == True:
  227. pp_jpg_1 = pp_jpg_1.transpose()
  228. pp_png_1 = pp_png_1.transpose()
  229. pp_jpg_1 = pp_jpg_1.resize(value=800)
  230. pp_png_1 = pp_png_1.resize(value=800)
  231. pp_jpg_1=pp_jpg_1.rotate_advance(doge=30,is_crop=False)
  232. pp_png_1=pp_png_1.rotate_advance(doge=30,is_crop=False)
  233. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(220, -250))
  234. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  235. # return_orign=True,
  236. # goods_art_no=goods_art_no_list[0],
  237. # name="后跟",
  238. # )
  239. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== False:
  240. # pp_png_1 = pp_png_1.transpose()
  241. # aaa_img = PictureProcessing("RGBA", (pp_jpg_1.width*1.2, pp_jpg_1.height*1.2), (255,255,255,0))
  242. # pp_png_1 = pp_png_1.resize(value=850)
  243. # aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  244. # pp_png_1 = aaa_img.rotate(15)
  245. # bg_img = bg_img.to_overlay_pic_advance(
  246. # mode="pixel",
  247. # top_img=pp_png_1,
  248. # base="cs",
  249. # value=(-250, 300),
  250. # top_png_img=pp_png_1,
  251. # )
  252. # pp_jpg_2, pp_png_2 = self.image_one_pic(
  253. # return_orign=True,
  254. # goods_art_no=goods_art_no_list[0],
  255. # name="俯视",
  256. # )
  257. # if self.check_shoe_is_right_by_pixel(im=pp_png_2.im):
  258. # pp_png_2 = pp_png_2.transpose()
  259. # pp_png_2 = pp_png_2.resize(value=800)
  260. # aaa_img = PictureProcessing("RGBA", (pp_jpg_2.width*1.2, pp_jpg_2.height*1.2), (255,255,255,0))
  261. # aaa_img = aaa_img.paste_img(top_img=pp_png_2,base="cc", value=(0, 0))
  262. # pp_png_2 = aaa_img.rotate(15)
  263. # bg_img = bg_img.to_overlay_pic_advance(
  264. # mode="pixel",
  265. # top_img=pp_png_2,
  266. # base="cs",
  267. # value=(220, -450),
  268. # top_png_img=pp_png_2,
  269. # )
  270. detailed_images.append(bg_img)
  271. return PictureProcessing(im=self.add_pic(detailed_images))
  272. return bg_img
  273. def deal_pic_5(self):
  274. detailed_images = []
  275. goods_art_no_list = list(self.data.keys())
  276. # 背景图
  277. bg_img = PictureProcessing(r"{}\5.jpg".format(self.root))
  278. pp_jpg_1, pp_png_1 = self.image_one_pic(return_orign=True,
  279. goods_art_no=goods_art_no_list[0],
  280. name="侧视",
  281. )
  282. pp_jpg_1 = pp_jpg_1.resize(value=850)
  283. pp_png_1 = pp_png_1.resize(value=850)
  284. pp_jpg_1=pp_jpg_1.rotate_advance(doge=22,is_crop=False)
  285. pp_png_1=pp_png_1.rotate_advance(doge=22,is_crop=False)
  286. bg_img = bg_img.to_overlay_pic_advance(top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs",value=(-50, -230))
  287. detailed_images.append(bg_img)
  288. return PictureProcessing(im=self.add_pic(detailed_images))
  289. def deal_pic_6(self):
  290. if self.get_text_value("模特图"):
  291. hh_img = PictureProcessing(r"{}\6.jpg".format(self.root))
  292. mote_img = PictureProcessing(self.get_text_value("模特图"))
  293. mote_img = mote_img.resize(value=1400)
  294. bg_img = PictureProcessing("RGB", (hh_img.width, hh_img.height+mote_img.height), (255,255,255))
  295. bg_img = bg_img.paste_img(top_img=hh_img,base="nc", value=(0, 0))
  296. bg_img = bg_img.paste_img(top_img=mote_img,base="nc", value=(0, hh_img.height))
  297. return bg_img
  298. else:
  299. return
  300. def deal_pic_7(self):
  301. if self.get_text_value("场景图"):
  302. hh_img = PictureProcessing(r"{}\7.jpg".format(self.root))
  303. mote_img = PictureProcessing(self.get_text_value("场景图"))
  304. mote_img = mote_img.resize(value=1400)
  305. bg_img = PictureProcessing("RGB", (hh_img.width, hh_img.height+mote_img.height), (255,255,255))
  306. bg_img = bg_img.paste_img(top_img=hh_img,base="nc", value=(0, 0))
  307. bg_img = bg_img.paste_img(top_img=mote_img,base="nc", value=(0, hh_img.height))
  308. return bg_img
  309. else:
  310. return
  311. def deal_pic_8(self):
  312. # 背景图
  313. bg_img = PictureProcessing(r"{}\8.jpg".format(self.root))
  314. return bg_img
  315. def deal_pic_9(self):
  316. # 背景图
  317. bg_img = PictureProcessing(r"{}\9.jpg".format(self.root))
  318. return bg_img
  319. def deal_pic_10(self):
  320. goods_art_no_list = list(self.data.keys())
  321. # 背景图
  322. bg_img = PictureProcessing(r"{}\10.jpg".format(self.root))
  323. # 长宽示例
  324. pp_jpg_1, pp_png_1 = self.image_one_pic(
  325. return_orign=True,
  326. goods_art_no=goods_art_no_list[0],
  327. name="俯视",
  328. )
  329. pp_jpg_1 = pp_jpg_1.resize(value=660)
  330. pp_png_1 = pp_png_1.resize(value=660)
  331. bg_img = bg_img.to_overlay_pic_advance(
  332. mode="pixel",
  333. top_img=pp_jpg_1,
  334. base="cs",
  335. value=(-40, 1640),
  336. top_png_img=pp_png_1,
  337. )
  338. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24) # 设计理念
  339. xiemian = self.get_text_value("商品面料") or "底层牛剖层革\n面层合成革"
  340. neili = self.get_text_value("商品内里") or "布里"
  341. xiedian = self.get_text_value("鞋垫") or "猪垫"
  342. xiedi = self.get_text_value("商品鞋底") or "橡胶"
  343. bg_img.get_text_image_advanced(
  344. value=(302, 1648),
  345. font=font_hei,
  346. text=xiemian,
  347. align="left",
  348. # anchor="ma",
  349. spacing=5,
  350. fill=(74, 74, 74),
  351. return_mode="image",
  352. margins=(0, 0, 0, 0),
  353. )
  354. bg_img.get_text_image_advanced(
  355. value=(944, 1648),
  356. font=font_hei,
  357. text=neili,
  358. align="left",
  359. # anchor="ma",
  360. spacing=5,
  361. fill=(74, 74, 74),
  362. return_mode="image",
  363. margins=(0, 0, 0, 0),
  364. )
  365. bg_img.get_text_image_advanced(
  366. value=(302, 1900),
  367. font=font_hei,
  368. text=xiedian,
  369. align="left",
  370. # anchor="ma",
  371. spacing=5,
  372. fill=(74, 74, 74),
  373. return_mode="image",
  374. margins=(0, 0, 0, 0),
  375. )
  376. bg_img.get_text_image_advanced(
  377. value=(944, 1900),
  378. font=font_hei,
  379. text=xiedi,
  380. align="left",
  381. # anchor="ma",
  382. spacing=5,
  383. fill=(74, 74, 74),
  384. return_mode="image",
  385. margins=(0, 0, 0, 0),
  386. )
  387. itemNo = self.goods_no_value["货号资料"][0]["货号"]
  388. bg_img.get_text_image_advanced(
  389. value=(302, 2172),
  390. font=font_hei,
  391. text=itemNo,
  392. align="left",
  393. # anchor="ma",
  394. spacing=5,
  395. fill=(74, 74, 74),
  396. return_mode="image",
  397. margins=(0, 0, 0, 0),
  398. )
  399. xiekuan = self.get_text_value("鞋宽") or "10.4CM"
  400. xiechang = self.get_text_value("鞋长") or "26.2CM"
  401. gengao = self.get_text_value("跟高") or "4CM"
  402. bg_img.get_text_image_advanced(
  403. value=(223, 894),
  404. font=font_hei,
  405. text="鞋宽"+xiekuan,
  406. align="left",
  407. # anchor="ma",
  408. spacing=5,
  409. fill=(74, 74, 74),
  410. return_mode="image",
  411. margins=(0, 0, 0, 0),
  412. )
  413. bg_img.get_text_image_advanced(
  414. value=(585, 1269),
  415. font=font_hei,
  416. text="鞋长"+xiechang,
  417. align="left",
  418. # anchor="ma",
  419. spacing=5,
  420. fill=(74, 74, 74),
  421. return_mode="image",
  422. margins=(0, 0, 0, 0),
  423. )
  424. bg_img.get_text_image_advanced(
  425. value=(1089, 1014),
  426. font=font_hei,
  427. text="跟高"+gengao,
  428. align="left",
  429. # anchor="ma",
  430. spacing=5,
  431. fill=(74, 74, 74),
  432. return_mode="image",
  433. margins=(0, 0, 0, 0),
  434. )
  435. # 底部三连鞋子带文字
  436. # font_main = ImageFont.truetype(
  437. # r"resources\ttf\puhui\Medium.ttf", 30
  438. # )
  439. #
  440. # length=len(goods_art_no_list)
  441. # if length==3:
  442. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  443. # return_orign=True,
  444. # goods_art_no=goods_art_no_list[0],
  445. # name="侧视",
  446. # )
  447. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  448. # pp_png_1 = pp_png_1.resize(value=250)
  449. # bg_img = bg_img.to_overlay_pic_advance(
  450. # mode="pixel",
  451. # top_img=pp_jpg_1,
  452. # base="cs",
  453. # value=(-320, 366),
  454. # top_png_img=pp_png_1,
  455. # )
  456. #
  457. # bg_img.get_text_image_advanced(
  458. # value=(345, 2520),
  459. # font=font_main,
  460. # text=self.goods_no_value["货号资料"][0]["颜色名称"],
  461. # align="center",
  462. # # anchor="ma",
  463. # spacing=5,
  464. # fill=(0, 0, 0),
  465. # return_mode="image",
  466. # margins=(0, 0, 0, 0),
  467. # )
  468. #
  469. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  470. # return_orign=True,
  471. # goods_art_no=goods_art_no_list[1],
  472. # name="侧视",
  473. # )
  474. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  475. # pp_png_1 = pp_png_1.resize(value=250)
  476. # bg_img = bg_img.to_overlay_pic_advance(
  477. # mode="pixel",
  478. # top_img=pp_jpg_1,
  479. # base="cs",
  480. # value=(0, 366),
  481. # top_png_img=pp_png_1,
  482. # )
  483. #
  484. # bg_img.get_text_image_advanced(
  485. # value=(655, 2520),
  486. # font=font_main,
  487. # text=self.goods_no_value["货号资料"][1]["颜色名称"],
  488. # align="center",
  489. # # anchor="ma",
  490. # spacing=5,
  491. # fill=(0, 0, 0),
  492. # return_mode="image",
  493. # margins=(0, 0, 0, 0),
  494. # )
  495. #
  496. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  497. # return_orign=True,
  498. # goods_art_no=goods_art_no_list[2],
  499. # name="侧视",
  500. # )
  501. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  502. # pp_png_1 = pp_png_1.resize(value=250)
  503. # bg_img = bg_img.to_overlay_pic_advance(
  504. # mode="pixel",
  505. # top_img=pp_jpg_1,
  506. # base="cs",
  507. # value=(320, 366),
  508. # top_png_img=pp_png_1,
  509. # )
  510. #
  511. # bg_img.get_text_image_advanced(
  512. # value=(990, 2520),
  513. # font=font_main,
  514. # text=self.goods_no_value["货号资料"][2]["颜色名称"],
  515. # align="center",
  516. # # anchor="ma",
  517. # spacing=5,
  518. # fill=(0, 0, 0),
  519. # return_mode="image",
  520. # margins=(0, 0, 0, 0),
  521. # )
  522. # elif length==2:
  523. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  524. # return_orign=True,
  525. # goods_art_no=goods_art_no_list[0],
  526. # name="侧视",
  527. # )
  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, 366),
  535. # top_png_img=pp_png_1,
  536. # )
  537. #
  538. # bg_img.get_text_image_advanced(
  539. # value=(345, 2520),
  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. #
  552. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  553. # return_orign=True,
  554. # goods_art_no=goods_art_no_list[1],
  555. # name="侧视",
  556. # )
  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=(320, 366),
  564. # top_png_img=pp_png_1,
  565. # )
  566. #
  567. # bg_img.get_text_image_advanced(
  568. # value=(990, 2520),
  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. # elif length==1:
  579. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  580. # return_orign=True,
  581. # goods_art_no=goods_art_no_list[1],
  582. # name="侧视",
  583. # )
  584. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  585. # pp_png_1 = pp_png_1.resize(value=250)
  586. # bg_img = bg_img.to_overlay_pic_advance(
  587. # mode="pixel",
  588. # top_img=pp_jpg_1,
  589. # base="cs",
  590. # value=(0, 366),
  591. # top_png_img=pp_png_1,
  592. # )
  593. #
  594. # bg_img.get_text_image_advanced(
  595. # value=(655, 2520),
  596. # font=font_main,
  597. # text=self.goods_no_value["货号资料"][1]["颜色名称"],
  598. # align="center",
  599. # # anchor="ma",
  600. # spacing=5,
  601. # fill=(0, 0, 0),
  602. # return_mode="image",
  603. # margins=(0, 0, 0, 0),
  604. # )
  605. font_2 = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 34) # 颜色名称
  606. color_pic_list_1 = []
  607. for goods_art_no_dict in self.goods_no_value["货号资料"]:
  608. color_name = goods_art_no_dict["颜色名称"]
  609. goods_art_no = goods_art_no_dict["货号"]
  610. pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no,
  611. color_name="侧视",
  612. bg_color=(247, 247, 247))
  613. pp_jpg = pp_jpg.resize(value=390)
  614. pp_jpg = pp_jpg.paste_img_invert(
  615. top_img=PictureProcessing("RGBA", (pp_jpg.width, pp_jpg.height + 70), (255, 255, 255, 0)),
  616. base="nw"
  617. )
  618. text_image = bg_img.get_text_image_advanced(font=font_2,
  619. text="{}".format(color_name),
  620. fill=(0, 0, 0),
  621. return_mode="min_image")
  622. pp_jpg = pp_jpg.paste_img(top_img=text_image, base="sc", value=(0, 10))
  623. color_pic_list_1.append(pp_jpg)
  624. # 颜色列表进行等分展示
  625. all_color_pp = PictureProcessing().horizontal_distribution(color_pic_list_1, bg_width=1114,
  626. line_spacing=10,
  627. number_per_row=3)
  628. bg_img = bg_img.to_overlay_pic_advance(
  629. mode="pixel",
  630. top_img=all_color_pp,
  631. base="cs",
  632. value=(0, 350),
  633. top_png_img=all_color_pp,
  634. )
  635. return bg_img
  636. def deal_pic_11(self):
  637. goods_art_no_list = list(self.data.keys())
  638. # 背景图
  639. header_img = PictureProcessing(r"{}\11-1.jpg".format(self.root))
  640. bg_img = PictureProcessing("RGBA", (header_img.width, 3575), (255,255,255))
  641. # 贴顶部
  642. bg_img = bg_img.to_overlay_pic_advance(
  643. mode="pixel",
  644. top_img=header_img,
  645. base="nc",
  646. value=(0, 0),
  647. top_png_img=header_img,
  648. )
  649. # item1
  650. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  651. length=len(goods_art_no_list)
  652. if length==3:
  653. pp_jpg_1, pp_png_1 = self.image_one_pic(
  654. return_orign=True,
  655. goods_art_no=goods_art_no_list[2],
  656. name="俯视",
  657. )
  658. pp_jpg_1 = pp_jpg_1.resize(value=460)
  659. pp_png_1 = pp_png_1.resize(value=460)
  660. item_img = item_img.to_overlay_pic_advance(
  661. mode="pixel",
  662. top_img=pp_jpg_1,
  663. base="cs",
  664. value=(-60, 300),
  665. top_png_img=pp_png_1,
  666. )
  667. if length>=2:
  668. pp_jpg_1, pp_png_1 = self.image_one_pic(
  669. return_orign=True,
  670. goods_art_no=goods_art_no_list[1],
  671. name="俯视",
  672. )
  673. pp_jpg_1 = pp_jpg_1.resize(value=460)
  674. pp_png_1 = pp_png_1.resize(value=460)
  675. item_img = item_img.to_overlay_pic_advance(
  676. mode="pixel",
  677. top_img=pp_jpg_1,
  678. base="cs",
  679. value=(0, 260),
  680. top_png_img=pp_png_1,
  681. )
  682. pp_jpg_1, pp_png_1 = self.image_one_pic(
  683. return_orign=True,
  684. goods_art_no=goods_art_no_list[0],
  685. name="俯视",
  686. )
  687. pp_jpg_1 = pp_jpg_1.resize(value=460)
  688. pp_png_1 = pp_png_1.resize(value=460)
  689. item_img = item_img.to_overlay_pic_advance(
  690. mode="pixel",
  691. top_img=pp_jpg_1,
  692. base="cs",
  693. value=(60, 220),
  694. top_png_img=pp_png_1,
  695. )
  696. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 40)
  697. item_img.get_text_image_advanced(
  698. value=(520, 600),
  699. font=font_hei,
  700. text="正面45°/FRONT45°",
  701. align="left",
  702. # anchor="ma",
  703. spacing=5,
  704. fill=(0, 0, 0),
  705. return_mode="image",
  706. margins=(0, 0, 0, 0),
  707. )
  708. bg_img = bg_img.to_overlay_pic_advance(
  709. mode="pixel",
  710. top_img=item_img,
  711. base="nc",
  712. value=(0, 534),
  713. top_png_img=item_img,
  714. )
  715. # item2
  716. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  717. pp_jpg_1, pp_png_1 = self.image_one_pic(
  718. return_orign=True,
  719. goods_art_no=goods_art_no_list[0],
  720. name="后跟",
  721. )
  722. pp_jpg_1 = pp_jpg_1.resize(value=460)
  723. pp_png_1 = pp_png_1.resize(value=460)
  724. item_img = item_img.to_overlay_pic_advance(
  725. mode="pixel",
  726. top_img=pp_jpg_1,
  727. base="cs",
  728. value=(60, 260),
  729. top_png_img=pp_png_1,
  730. )
  731. pp_jpg_1, pp_png_1 = self.image_one_pic(
  732. return_orign=True,
  733. goods_art_no=goods_art_no_list[0],
  734. name="后跟",
  735. )
  736. pp_jpg_1 = pp_jpg_1.resize(value=460)
  737. pp_png_1 = pp_png_1.resize(value=460)
  738. item_img = item_img.to_overlay_pic_advance(
  739. mode="pixel",
  740. top_img=pp_jpg_1,
  741. base="cs",
  742. value=(-60, 220),
  743. top_png_img=pp_png_1,
  744. )
  745. item_img.get_text_image_advanced(
  746. value=(520, 600),
  747. font=font_hei,
  748. text="背面45°/BACK45°",
  749. align="left",
  750. # anchor="ma",
  751. spacing=5,
  752. fill=(50, 50, 50),
  753. return_mode="image",
  754. margins=(0, 0, 0, 0),
  755. )
  756. bg_img = bg_img.to_overlay_pic_advance(
  757. mode="pixel",
  758. top_img=item_img,
  759. base="nc",
  760. value=(0, 534+760),
  761. top_png_img=item_img,
  762. )
  763. # item3
  764. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  765. pp_jpg_1, pp_png_1 = self.image_one_pic(
  766. return_orign=True,
  767. goods_art_no=goods_art_no_list[0],
  768. name="侧视",
  769. )
  770. pp_jpg_1 = pp_jpg_1.resize(value=530)
  771. pp_png_1 = pp_png_1.resize(value=530)
  772. item_img = item_img.to_overlay_pic_advance(
  773. mode="pixel",
  774. top_img=pp_jpg_1,
  775. base="cs",
  776. value=(0, 220),
  777. top_png_img=pp_png_1,
  778. )
  779. item_img.get_text_image_advanced(
  780. value=(600, 600),
  781. font=font_hei,
  782. text="侧面/SIDE",
  783. align="left",
  784. # anchor="ma",
  785. spacing=5,
  786. fill=(50, 50, 50),
  787. return_mode="image",
  788. margins=(0, 0, 0, 0),
  789. )
  790. bg_img = bg_img.to_overlay_pic_advance(
  791. mode="pixel",
  792. top_img=item_img,
  793. base="nc",
  794. value=(0, 534+760*2),
  795. top_png_img=item_img,
  796. )
  797. # item4
  798. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  799. pp_jpg_1, pp_png_1 = self.image_one_pic(
  800. return_orign=True,
  801. goods_art_no=goods_art_no_list[0],
  802. name="内里",
  803. )
  804. pp_jpg_1 = pp_jpg_1.resize(value=530)
  805. pp_png_1 = pp_png_1.resize(value=530)
  806. pp_jpg_1=pp_jpg_1.rotate_advance(doge=90,is_crop=False)
  807. pp_png_1=pp_png_1.rotate_advance(doge=90,is_crop=False)
  808. item_img = item_img.to_overlay_pic_advance(
  809. mode="pixel",
  810. top_img=pp_png_1,
  811. base="cs",
  812. value=(-120, -50),
  813. top_png_img=pp_png_1,
  814. )
  815. pp_jpg_1 = pp_jpg_1.transpose()
  816. pp_png_1 = pp_png_1.transpose()
  817. item_img = item_img.to_overlay_pic_advance(
  818. mode="pixel",
  819. top_img=pp_png_1,
  820. base="cs",
  821. value=(120, -50),
  822. top_png_img=pp_png_1,
  823. )
  824. item_img.get_text_image_advanced(
  825. value=(600, 600),
  826. font=font_hei,
  827. text="顶面/TOP",
  828. align="left",
  829. # anchor="ma",
  830. spacing=5,
  831. fill=(50, 50, 50),
  832. return_mode="image",
  833. margins=(0, 0, 0, 0),
  834. )
  835. bg_img = bg_img.to_overlay_pic_advance(
  836. mode="pixel",
  837. top_img=item_img,
  838. base="nc",
  839. value=(0, 534+760*3),
  840. top_png_img=item_img,
  841. )
  842. return bg_img
  843. def deal_pic_12(self):
  844. # 背景图
  845. bg_img = PictureProcessing(r"{}\12.jpg".format(self.root))
  846. return bg_img