detail_hongqingting2.py 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172
  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. posy=2325
  406. if pp_jpg_1.height > pp_jpg_1.width:
  407. aheight =350
  408. # 等比计算目标宽度
  409. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  410. else:
  411. if pp_jpg_1.height > (pp_jpg_1.width/2):
  412. awidth = int(bg_img.width * 0.4)
  413. else:
  414. awidth = int(bg_img.width * 0.4)
  415. posy=2380
  416. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  417. pp_png_1 = pp_png_1.resize(value=awidth)
  418. bg_img = bg_img.to_overlay_pic_advance(
  419. mode="pixel",
  420. top_img=pp_jpg_1,
  421. base="cs",
  422. value=(-15, posy),
  423. top_png_img=pp_png_1,
  424. )
  425. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24) # 设计理念
  426. xiemian = self.get_text_value("商品面料") or "底层牛剖层革\n面层合成革"
  427. neili = self.get_text_value("商品内里") or "布里"
  428. xiedian = self.get_text_value("鞋垫") or "猪垫"
  429. xiedi = self.get_text_value("商品鞋底") or "橡胶"
  430. bg_img.get_text_image_advanced(
  431. value=(226, 1326),
  432. font=font_hei,
  433. text=xiemian,
  434. align="left",
  435. # anchor="ma",
  436. spacing=5,
  437. fill=(74, 74, 74),
  438. return_mode="image",
  439. margins=(0, 0, 0, 0),
  440. )
  441. bg_img.get_text_image_advanced(
  442. value=(722, 1326),
  443. font=font_hei,
  444. text=neili,
  445. align="left",
  446. # anchor="ma",
  447. spacing=5,
  448. fill=(74, 74, 74),
  449. return_mode="image",
  450. margins=(0, 0, 0, 0),
  451. )
  452. bg_img.get_text_image_advanced(
  453. value=(226, 1525),
  454. font=font_hei,
  455. text=xiedian,
  456. align="left",
  457. # anchor="ma",
  458. spacing=5,
  459. fill=(74, 74, 74),
  460. return_mode="image",
  461. margins=(0, 0, 0, 0),
  462. )
  463. bg_img.get_text_image_advanced(
  464. value=(722, 1525),
  465. font=font_hei,
  466. text=xiedi,
  467. align="left",
  468. # anchor="ma",
  469. spacing=5,
  470. fill=(74, 74, 74),
  471. return_mode="image",
  472. margins=(0, 0, 0, 0),
  473. )
  474. itemNo = self.goods_no_value["货号资料"][0]["货号"]
  475. bg_img.get_text_image_advanced(
  476. value=(226, 1728),
  477. font=font_hei,
  478. text=itemNo,
  479. align="left",
  480. # anchor="ma",
  481. spacing=5,
  482. fill=(74, 74, 74),
  483. return_mode="image",
  484. margins=(0, 0, 0, 0),
  485. )
  486. xiekuan = self.get_text_value("鞋宽") or "10.4CM"
  487. xiechang = self.get_text_value("鞋长") or "26.2CM"
  488. tonggao = self.get_text_value("筒高") or "13.2CM"
  489. gengao = self.get_text_value("跟高") or "4CM"
  490. tongziwei = self.get_text_value("筒口围") or "28CM"
  491. bg_img.get_text_image_advanced(
  492. value=(270, 770),
  493. font=font_hei,
  494. text="鞋宽"+xiekuan,
  495. align="left",
  496. # anchor="ma",
  497. spacing=5,
  498. fill=(74, 74, 74),
  499. return_mode="image",
  500. margins=(0, 0, 0, 0),
  501. )
  502. bg_img.get_text_image_advanced(
  503. value=(442, 1027),
  504. font=font_hei,
  505. text="鞋长"+xiechang,
  506. align="left",
  507. # anchor="ma",
  508. spacing=5,
  509. fill=(74, 74, 74),
  510. return_mode="image",
  511. margins=(0, 0, 0, 0),
  512. )
  513. bg_img.get_text_image_advanced(
  514. value=(770, 734),
  515. font=font_hei,
  516. text="筒高"+tonggao,
  517. align="left",
  518. # anchor="ma",
  519. spacing=5,
  520. fill=(74, 74, 74),
  521. return_mode="image",
  522. margins=(0, 0, 0, 0),
  523. )
  524. bg_img.get_text_image_advanced(
  525. value=(787, 875),
  526. font=font_hei,
  527. text="跟高"+gengao,
  528. align="left",
  529. # anchor="ma",
  530. spacing=5,
  531. fill=(74, 74, 74),
  532. return_mode="image",
  533. margins=(0, 0, 0, 0),
  534. )
  535. bg_img.get_text_image_advanced(
  536. value=(545, 557),
  537. font=font_hei,
  538. text="筒口围"+tongziwei,
  539. align="left",
  540. # anchor="ma",
  541. spacing=5,
  542. fill=(74, 74, 74),
  543. return_mode="image",
  544. margins=(0, 0, 0, 0),
  545. )
  546. # 底部三连鞋子带文字
  547. font_main = ImageFont.truetype(
  548. r"resources\ttf\puhui\Medium.ttf", 30
  549. )
  550. # length = len(goods_art_no_list)
  551. # if length==3:
  552. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  553. # return_orign=True,
  554. # goods_art_no=goods_art_no_list[0],
  555. # name="侧视",
  556. # )
  557. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  558. # pp_png_1 = pp_png_1.transpose()
  559. # pp_jpg_1 = pp_jpg_1.transpose()
  560. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  561. # pp_png_1 = pp_png_1.resize(value=250)
  562. # bg_img = bg_img.to_overlay_pic_advance(
  563. # mode="pixel",
  564. # top_img=pp_jpg_1,
  565. # base="cs",
  566. # value=(-320, 1240),
  567. # top_png_img=pp_png_1,
  568. # )
  569. #
  570. # bg_img.get_text_image_advanced(
  571. # value=(190, 2110),
  572. # font=font_main,
  573. # text=self.goods_no_value["货号资料"][0]["颜色名称"],
  574. # align="center",
  575. # # anchor="ma",
  576. # spacing=5,
  577. # fill=(0, 0, 0),
  578. # return_mode="image",
  579. # margins=(0, 0, 0, 0),
  580. # )
  581. #
  582. #
  583. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  584. # return_orign=True,
  585. # goods_art_no=goods_art_no_list[1],
  586. # name="侧视",
  587. # )
  588. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  589. # pp_png_1 = pp_png_1.transpose()
  590. # pp_jpg_1 = pp_jpg_1.transpose()
  591. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  592. # pp_png_1 = pp_png_1.resize(value=250)
  593. # bg_img = bg_img.to_overlay_pic_advance(
  594. # mode="pixel",
  595. # top_img=pp_jpg_1,
  596. # base="cs",
  597. # value=(0, 1240),
  598. # top_png_img=pp_png_1,
  599. # )
  600. #
  601. # bg_img.get_text_image_advanced(
  602. # value=(510, 2110),
  603. # font=font_main,
  604. # text=self.goods_no_value["货号资料"][1]["颜色名称"],
  605. # align="center",
  606. # # anchor="ma",
  607. # spacing=5,
  608. # fill=(0, 0, 0),
  609. # return_mode="image",
  610. # margins=(0, 0, 0, 0),
  611. # )
  612. #
  613. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  614. # return_orign=True,
  615. # goods_art_no=goods_art_no_list[2],
  616. # name="侧视",
  617. # )
  618. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  619. # pp_png_1 = pp_png_1.transpose()
  620. # pp_jpg_1 = pp_jpg_1.transpose()
  621. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  622. # pp_png_1 = pp_png_1.resize(value=250)
  623. # bg_img = bg_img.to_overlay_pic_advance(
  624. # mode="pixel",
  625. # top_img=pp_jpg_1,
  626. # base="cs",
  627. # value=(320, 1240),
  628. # top_png_img=pp_png_1,
  629. # )
  630. #
  631. # bg_img.get_text_image_advanced(
  632. # value=(830, 2110),
  633. # font=font_main,
  634. # text=self.goods_no_value["货号资料"][2]["颜色名称"],
  635. # align="center",
  636. # # anchor="ma",
  637. # spacing=5,
  638. # fill=(0, 0, 0),
  639. # return_mode="image",
  640. # margins=(0, 0, 0, 0),
  641. # )
  642. # elif length==2:
  643. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  644. # return_orign=True,
  645. # goods_art_no=goods_art_no_list[0],
  646. # name="侧视",
  647. # )
  648. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  649. # pp_png_1 = pp_png_1.transpose()
  650. # pp_jpg_1 = pp_jpg_1.transpose()
  651. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  652. # pp_png_1 = pp_png_1.resize(value=250)
  653. # bg_img = bg_img.to_overlay_pic_advance(
  654. # mode="pixel",
  655. # top_img=pp_jpg_1,
  656. # base="cs",
  657. # value=(-320, 1240),
  658. # top_png_img=pp_png_1,
  659. # )
  660. #
  661. # bg_img.get_text_image_advanced(
  662. # value=(190, 2110),
  663. # font=font_main,
  664. # text=self.goods_no_value["货号资料"][0]["颜色名称"],
  665. # align="center",
  666. # # anchor="ma",
  667. # spacing=5,
  668. # fill=(0, 0, 0),
  669. # return_mode="image",
  670. # margins=(0, 0, 0, 0),
  671. # )
  672. #
  673. #
  674. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  675. # return_orign=True,
  676. # goods_art_no=goods_art_no_list[1],
  677. # name="侧视",
  678. # )
  679. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  680. # pp_png_1 = pp_png_1.transpose()
  681. # pp_jpg_1 = pp_jpg_1.transpose()
  682. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  683. # pp_png_1 = pp_png_1.resize(value=250)
  684. # bg_img = bg_img.to_overlay_pic_advance(
  685. # mode="pixel",
  686. # top_img=pp_jpg_1,
  687. # base="cs",
  688. # value=(320, 1240),
  689. # top_png_img=pp_png_1,
  690. # )
  691. #
  692. # bg_img.get_text_image_advanced(
  693. # value=(830, 2110),
  694. # font=font_main,
  695. # text=self.goods_no_value["货号资料"][1]["颜色名称"],
  696. # align="center",
  697. # # anchor="ma",
  698. # spacing=5,
  699. # fill=(0, 0, 0),
  700. # return_mode="image",
  701. # margins=(0, 0, 0, 0),
  702. # )
  703. # elif length==1:
  704. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  705. # return_orign=True,
  706. # goods_art_no=goods_art_no_list[0],
  707. # name="侧视",
  708. # )
  709. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  710. # pp_png_1 = pp_png_1.transpose()
  711. # pp_jpg_1 = pp_jpg_1.transpose()
  712. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  713. # pp_png_1 = pp_png_1.resize(value=250)
  714. # bg_img = bg_img.to_overlay_pic_advance(
  715. # mode="pixel",
  716. # top_img=pp_jpg_1,
  717. # base="cs",
  718. # value=(0, 1240),
  719. # top_png_img=pp_png_1,
  720. # )
  721. #
  722. # bg_img.get_text_image_advanced(
  723. # value=(510, 2110),
  724. # font=font_main,
  725. # text=self.goods_no_value["货号资料"][0]["颜色名称"],
  726. # align="center",
  727. # # anchor="ma",
  728. # spacing=5,
  729. # fill=(0, 0, 0),
  730. # return_mode="image",
  731. # margins=(0, 0, 0, 0),
  732. # )
  733. font_2 = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 34) # 颜色名称
  734. color_pic_list_1 = []
  735. for goods_art_no_dict in self.goods_no_value["货号资料"]:
  736. color_name = goods_art_no_dict["颜色名称"]
  737. goods_art_no = goods_art_no_dict["货号"]
  738. pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no,
  739. color_name="侧视",
  740. bg_color=(247, 247, 247))
  741. pp_jpg = pp_jpg.resize(value=390)
  742. pp_jpg = pp_jpg.paste_img_invert(
  743. top_img=PictureProcessing("RGBA", (pp_jpg.width, pp_jpg.height + 70), (255, 255, 255, 0)),
  744. base="nw"
  745. )
  746. text_image = bg_img.get_text_image_advanced(font=font_2,
  747. text="{}".format(color_name),
  748. fill=(0, 0, 0),
  749. return_mode="min_image")
  750. pp_jpg = pp_jpg.paste_img(top_img=text_image, base="sc", value=(0, 10))
  751. color_pic_list_1.append(pp_jpg)
  752. # 颜色列表进行等分展示
  753. all_color_pp = PictureProcessing().horizontal_distribution(color_pic_list_1, bg_width=1114,
  754. line_spacing=10,
  755. number_per_row=3)
  756. bg_img = bg_img.to_overlay_pic_advance(
  757. mode="pixel",
  758. top_img=all_color_pp,
  759. base="cs",
  760. value=(0, 1150),
  761. top_png_img=all_color_pp,
  762. )
  763. return bg_img
  764. def deal_pic_11(self):
  765. goods_art_no_list = list(self.data.keys())
  766. # 背景图
  767. header_img = PictureProcessing(r"{}\11-1.jpg".format(self.root))
  768. bg_img = PictureProcessing("RGBA", (header_img.width, 3440), (255,255,255))
  769. # 贴顶部
  770. bg_img = bg_img.to_overlay_pic_advance(
  771. mode="pixel",
  772. top_img=header_img,
  773. base="nc",
  774. value=(0, 0),
  775. top_png_img=header_img,
  776. )
  777. # item1
  778. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  779. if len(goods_art_no_list)==3:
  780. pp_jpg_1, pp_png_1 = self.image_one_pic(
  781. return_orign=True,
  782. goods_art_no=goods_art_no_list[2],
  783. name="俯视",
  784. )
  785. aheight =400
  786. # 等比计算目标宽度
  787. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  788. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  789. pp_png_1 = pp_png_1.transpose()
  790. pp_jpg_1 = pp_jpg_1.transpose()
  791. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  792. pp_png_1 = pp_png_1.resize(value=awidth)
  793. item_img = item_img.to_overlay_pic_advance(
  794. mode="pixel",
  795. top_img=pp_jpg_1,
  796. base="cs",
  797. value=(-60, 300),
  798. top_png_img=pp_png_1,
  799. )
  800. if len(goods_art_no_list)>=2:
  801. pp_jpg_1, pp_png_1 = self.image_one_pic(
  802. return_orign=True,
  803. goods_art_no=goods_art_no_list[1],
  804. name="俯视",
  805. )
  806. aheight =400
  807. # 等比计算目标宽度
  808. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  809. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  810. pp_png_1 = pp_png_1.transpose()
  811. pp_jpg_1 = pp_jpg_1.transpose()
  812. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  813. pp_png_1 = pp_png_1.resize(value=awidth)
  814. item_img = item_img.to_overlay_pic_advance(
  815. mode="pixel",
  816. top_img=pp_jpg_1,
  817. base="cs",
  818. value=(0, 260),
  819. top_png_img=pp_png_1,
  820. )
  821. pp_jpg_1, pp_png_1 = self.image_one_pic(
  822. return_orign=True,
  823. goods_art_no=goods_art_no_list[0],
  824. name="俯视",
  825. )
  826. aheight =400
  827. # 等比计算目标宽度
  828. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  829. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  830. pp_png_1 = pp_png_1.transpose()
  831. pp_jpg_1 = pp_jpg_1.transpose()
  832. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  833. pp_png_1 = pp_png_1.resize(value=awidth)
  834. item_img = item_img.to_overlay_pic_advance(
  835. mode="pixel",
  836. top_img=pp_jpg_1,
  837. base="cs",
  838. value=(60, 220),
  839. top_png_img=pp_png_1,
  840. )
  841. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24)
  842. item_img.get_text_image_advanced(
  843. value=(436, 600),
  844. font=font_hei,
  845. text="正面45°/FRONT45°",
  846. align="left",
  847. # anchor="ma",
  848. spacing=5,
  849. fill=(0, 0, 0),
  850. return_mode="image",
  851. margins=(0, 0, 0, 0),
  852. )
  853. bg_img = bg_img.to_overlay_pic_advance(
  854. mode="pixel",
  855. top_img=item_img,
  856. base="nc",
  857. value=(0, 400),
  858. top_png_img=item_img,
  859. )
  860. # item2
  861. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  862. pp_jpg_1, pp_png_1 = self.image_one_pic(
  863. return_orign=True,
  864. goods_art_no=goods_art_no_list[0],
  865. name="后跟",
  866. )
  867. aheight =400
  868. # 等比计算目标宽度
  869. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  870. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  871. pp_png_1 = pp_png_1.resize(value=awidth)
  872. item_img = item_img.to_overlay_pic_advance(
  873. mode="pixel",
  874. top_img=pp_jpg_1,
  875. base="cs",
  876. value=(0, 220),
  877. top_png_img=pp_png_1,
  878. )
  879. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24)
  880. item_img.get_text_image_advanced(
  881. value=(436, 600),
  882. font=font_hei,
  883. text="背面45°/BACK45°",
  884. align="left",
  885. # anchor="ma",
  886. spacing=5,
  887. fill=(0, 0, 0),
  888. return_mode="image",
  889. margins=(0, 0, 0, 0),
  890. )
  891. bg_img = bg_img.to_overlay_pic_advance(
  892. mode="pixel",
  893. top_img=item_img,
  894. base="nc",
  895. value=(0, 400+760),
  896. top_png_img=item_img,
  897. )
  898. # item3
  899. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  900. pp_jpg_1, pp_png_1 = self.image_one_pic(
  901. return_orign=True,
  902. goods_art_no=goods_art_no_list[0],
  903. name="侧视",
  904. )
  905. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  906. pp_png_1 = pp_png_1.transpose()
  907. pp_jpg_1 = pp_jpg_1.transpose()
  908. aheight =380
  909. # 等比计算目标宽度
  910. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  911. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  912. pp_png_1 = pp_png_1.resize(value=awidth)
  913. item_img = item_img.to_overlay_pic_advance(
  914. mode="pixel",
  915. top_img=pp_jpg_1,
  916. base="cs",
  917. value=(0, 220),
  918. top_png_img=pp_png_1,
  919. )
  920. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24)
  921. item_img.get_text_image_advanced(
  922. value=(500, 600),
  923. font=font_hei,
  924. text="侧面/SIDE",
  925. align="left",
  926. # anchor="ma",
  927. spacing=5,
  928. fill=(0, 0, 0),
  929. return_mode="image",
  930. margins=(0, 0, 0, 0),
  931. )
  932. bg_img = bg_img.to_overlay_pic_advance(
  933. mode="pixel",
  934. top_img=item_img,
  935. base="nc",
  936. value=(0, 400+760*2),
  937. top_png_img=item_img,
  938. )
  939. # item4
  940. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  941. pp_jpg_1, pp_png_1 = self.image_one_pic(
  942. return_orign=True,
  943. goods_art_no=goods_art_no_list[0],
  944. name="内里",
  945. )
  946. pp_jpg_1 = pp_jpg_1.resize(value=530)
  947. pp_png_1 = pp_png_1.resize(value=530)
  948. ty=0
  949. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  950. pp_jpg_1 = pp_jpg_1.transpose()
  951. pp_png_1 = pp_png_1.transpose()
  952. ty=1
  953. pp_jpg_1=pp_jpg_1.rotate_advance(doge=90,is_crop=False)
  954. pp_png_1=pp_png_1.rotate_advance(doge=90,is_crop=False)
  955. if ty==1:
  956. pp_jpg_1 = pp_jpg_1.transpose()
  957. pp_png_1 = pp_png_1.transpose()
  958. item_img = item_img.to_overlay_pic_advance(
  959. mode="pixel",
  960. top_img=pp_png_1,
  961. base="cs",
  962. value=(0, -50),
  963. top_png_img=pp_png_1,
  964. )
  965. # pp_jpg_1 = pp_jpg_1.transpose()
  966. # pp_png_1 = pp_png_1.transpose()
  967. # item_img = item_img.to_overlay_pic_advance(
  968. # mode="pixel",
  969. # top_img=pp_png_1,
  970. # base="cs",
  971. # value=(120, -50),
  972. # top_png_img=pp_png_1,
  973. # )
  974. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24)
  975. item_img.get_text_image_advanced(
  976. value=(500, 600),
  977. font=font_hei,
  978. text="顶面/TOP",
  979. align="left",
  980. # anchor="ma",
  981. spacing=5,
  982. fill=(0, 0, 0),
  983. return_mode="image",
  984. margins=(0, 0, 0, 0),
  985. )
  986. bg_img = bg_img.to_overlay_pic_advance(
  987. mode="pixel",
  988. top_img=item_img,
  989. base="nc",
  990. value=(0, 400+760*3),
  991. top_png_img=item_img,
  992. )
  993. return bg_img
  994. def deal_pic_12(self):
  995. # 背景图
  996. goods_art_no_list = list(self.data.keys())
  997. # 背景图
  998. bg_img = PictureProcessing(r"{}\12.jpg".format(self.root))
  999. item_img = PictureProcessing("RGB", (404, 334), (247,247,247))
  1000. bg_img = bg_img.to_overlay_pic_advance(
  1001. mode="pixel",
  1002. top_img=item_img,
  1003. base="es",
  1004. value=(150, 180+2158),
  1005. top_png_img=item_img,
  1006. )
  1007. # item4
  1008. item_img = PictureProcessing("RGBA", (bg_img.width, 760), (255,255,255))
  1009. pp_jpg_1, pp_png_1 = self.image_one_pic(
  1010. return_orign=True,
  1011. goods_art_no=goods_art_no_list[0],
  1012. name="内里",
  1013. )
  1014. aheight =100
  1015. # 等比计算目标宽度
  1016. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  1017. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  1018. pp_png_1 = pp_png_1.resize(value=awidth)
  1019. ty=0
  1020. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  1021. pp_jpg_1 = pp_jpg_1.transpose()
  1022. pp_png_1 = pp_png_1.transpose()
  1023. ty=1
  1024. pp_jpg_1=pp_jpg_1.rotate_advance(doge=90,is_crop=False)
  1025. pp_png_1=pp_png_1.rotate_advance(doge=90,is_crop=False)
  1026. if ty==1:
  1027. pp_jpg_1 = pp_jpg_1.transpose()
  1028. pp_png_1 = pp_png_1.transpose()
  1029. bg_img = bg_img.to_overlay_pic_advance(
  1030. mode="pixel",
  1031. top_img=pp_png_1,
  1032. base="es",
  1033. value=(-60+50,50+2158),
  1034. top_png_img=pp_png_1,
  1035. )
  1036. pp_jpg_1 = pp_jpg_1.transpose()
  1037. pp_png_1 = pp_png_1.transpose()
  1038. bg_img = bg_img.to_overlay_pic_advance(
  1039. mode="pixel",
  1040. top_img=pp_png_1,
  1041. base="es",
  1042. value=(60+50, 50+2158),
  1043. top_png_img=pp_png_1,
  1044. )
  1045. return bg_img