detail_hongqingting2.py 38 KB

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