detail_hongqingting2.py 38 KB

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