detail_hongqingting2.py 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178
  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. try:
  212. hh_img = PictureProcessing(r"{}\6.jpg".format(self.root))
  213. mote_img = PictureProcessing(self.get_text_value("模特图"))
  214. mote_img = mote_img.resize(value=896)
  215. bg_img = PictureProcessing("RGB", (hh_img.width, hh_img.height+mote_img.height+90), (252,238,225))
  216. bg_img = bg_img.paste_img(top_img=hh_img,base="nc", value=(0, 0))
  217. bg_img = bg_img.paste_img(top_img=mote_img,base="nc", value=(0, hh_img.height))
  218. return bg_img
  219. except:
  220. return
  221. else:
  222. return
  223. def deal_pic_7(self):
  224. if self.get_text_value("场景图"):
  225. try:
  226. hh_img = PictureProcessing(r"{}\7-1.jpg".format(self.root))
  227. mote_img = PictureProcessing(self.get_text_value("场景图"))
  228. mote_img = mote_img.resize(value=896)
  229. ff_img = PictureProcessing(r"{}\7-2.jpg".format(self.root))
  230. bg_img = PictureProcessing("RGB", (hh_img.width, hh_img.height+mote_img.height+ff_img.height), (252,238,225))
  231. bg_img = bg_img.paste_img(top_img=hh_img,base="nc", value=(0, 0))
  232. bg_img = bg_img.paste_img(top_img=mote_img,base="nc", value=(0, hh_img.height))
  233. bg_img = bg_img.paste_img(top_img=ff_img,base="nc", value=(0, hh_img.height+mote_img.height))
  234. return bg_img
  235. except:
  236. return
  237. else:
  238. return
  239. def deal_pic_8(self):
  240. goods_art_no_list = list(self.data.keys())
  241. # 背景图
  242. bg_img = PictureProcessing(r"{}\8.jpg".format(self.root))
  243. pp_jpg_1, pp_png_1 = self.image_one_pic(
  244. return_orign=True,
  245. goods_art_no=goods_art_no_list[0],
  246. name="俯视",
  247. )
  248. aaa_img = PictureProcessing("RGBA", (pp_jpg_1.width*1.2, pp_jpg_1.height*1.2), (255,255,255,0))
  249. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  250. pp_png_1 = pp_png_1.transpose()
  251. pp_jpg_1 = pp_jpg_1.transpose()
  252. pp_jpg_1 = pp_jpg_1.resize(value=int(round(bg_img.width * 660 / 1080)))
  253. pp_png_1 = pp_png_1.resize(value=int(round(bg_img.width * 660 / 1080)))
  254. pw=pp_png_1.width
  255. ph=pp_png_1.height
  256. aaa_img = aaa_img.paste_img(top_img=pp_png_1,base="cc", value=(0, 0))
  257. pp_png_1 = aaa_img.rotate(15)
  258. print("811111111111111111")
  259. print(ph/pw)
  260. if (ph/pw)>1:
  261. posy=(-1)*int(round(bg_img.height * 0.27))
  262. elif (ph/pw)>0.8:
  263. posy=(-1)*int(round(bg_img.height * 0.225))
  264. else:
  265. posy=(-1)*int(round(bg_img.height * 0.20))
  266. posx=-10
  267. # posy=int(round(bg_img.height * 0.01))
  268. # print(posy)
  269. bg_img = bg_img.to_overlay_pic_advance(
  270. mode="pixel",
  271. top_img=pp_png_1,
  272. base="cc",
  273. value=(posx, posy),
  274. top_png_img=pp_png_1,
  275. )
  276. bg_img1 = PictureProcessing("RGB", (bg_img.width, 1080), (255,255,255))
  277. bg_img1 = bg_img1.paste_img(top_img=bg_img,base="nc", value=(0, 0))
  278. # hover_img = PictureProcessing(r"{}\8-1.png".format(self.root))
  279. # bg_img = bg_img.to_overlay_pic_advance(
  280. # mode="pixel",
  281. # top_img=hover_img,
  282. # base="nc",
  283. # value=(0, -1),
  284. # top_png_img=hover_img,
  285. # )
  286. return bg_img1
  287. def deal_pic_9(self):
  288. goods_art_no_list = list(self.data.keys())
  289. # 背景图
  290. bg_img = PictureProcessing(r"{}\9.jpg".format(self.root))
  291. length = len(goods_art_no_list)
  292. if length==3:
  293. pp_jpg_1, pp_png_1 = self.image_one_pic(
  294. return_orign=True,
  295. goods_art_no=goods_art_no_list[2],
  296. name="俯视",
  297. )
  298. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  299. pp_png_1 = pp_png_1.transpose()
  300. pp_jpg_1 = pp_jpg_1.transpose()
  301. pp_jpg_1 = pp_jpg_1.resize(value=460)
  302. pp_png_1 = pp_png_1.resize(value=460)
  303. bg_img = bg_img.to_overlay_pic_advance(
  304. mode="pixel",
  305. top_img=pp_jpg_1,
  306. base="cs",
  307. value=(-60, 320),
  308. top_png_img=pp_png_1,
  309. )
  310. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  311. pp_png_1 = pp_png_1.transpose()
  312. pp_jpg_1 = pp_jpg_1.transpose()
  313. pp_jpg_1, pp_png_1 = self.image_one_pic(
  314. return_orign=True,
  315. goods_art_no=goods_art_no_list[1],
  316. name="俯视",
  317. )
  318. pp_jpg_1 = pp_jpg_1.resize(value=460)
  319. pp_png_1 = pp_png_1.resize(value=460)
  320. bg_img = bg_img.to_overlay_pic_advance(
  321. mode="pixel",
  322. top_img=pp_jpg_1,
  323. base="cs",
  324. value=(0, 280),
  325. top_png_img=pp_png_1,
  326. )
  327. pp_jpg_1, pp_png_1 = self.image_one_pic(
  328. return_orign=True,
  329. goods_art_no=goods_art_no_list[0],
  330. name="俯视",
  331. )
  332. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  333. pp_png_1 = pp_png_1.transpose()
  334. pp_jpg_1 = pp_jpg_1.transpose()
  335. pp_jpg_1 = pp_jpg_1.resize(value=460)
  336. pp_png_1 = pp_png_1.resize(value=460)
  337. bg_img = bg_img.to_overlay_pic_advance(
  338. mode="pixel",
  339. top_img=pp_jpg_1,
  340. base="cs",
  341. value=(60, 240),
  342. top_png_img=pp_png_1,
  343. )
  344. elif length==2:
  345. pp_jpg_1, pp_png_1 = self.image_one_pic(
  346. return_orign=True,
  347. goods_art_no=goods_art_no_list[1],
  348. name="俯视",
  349. )
  350. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  351. pp_png_1 = pp_png_1.transpose()
  352. pp_jpg_1 = pp_jpg_1.transpose()
  353. pp_jpg_1 = pp_jpg_1.resize(value=460)
  354. pp_png_1 = pp_png_1.resize(value=460)
  355. bg_img = bg_img.to_overlay_pic_advance(
  356. mode="pixel",
  357. top_img=pp_jpg_1,
  358. base="cs",
  359. value=(-40, 300),
  360. top_png_img=pp_png_1,
  361. )
  362. pp_jpg_1, pp_png_1 = self.image_one_pic(
  363. return_orign=True,
  364. goods_art_no=goods_art_no_list[0],
  365. name="俯视",
  366. )
  367. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  368. pp_png_1 = pp_png_1.transpose()
  369. pp_jpg_1 = pp_jpg_1.transpose()
  370. pp_jpg_1 = pp_jpg_1.resize(value=460)
  371. pp_png_1 = pp_png_1.resize(value=460)
  372. bg_img = bg_img.to_overlay_pic_advance(
  373. mode="pixel",
  374. top_img=pp_jpg_1,
  375. base="cs",
  376. value=(40, 260),
  377. top_png_img=pp_png_1,
  378. )
  379. elif length==1:
  380. pp_jpg_1, pp_png_1 = self.image_one_pic(
  381. return_orign=True,
  382. goods_art_no=goods_art_no_list[0],
  383. name="俯视",
  384. )
  385. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  386. pp_png_1 = pp_png_1.transpose()
  387. pp_jpg_1 = pp_jpg_1.transpose()
  388. pp_jpg_1 = pp_jpg_1.resize(value=460)
  389. pp_png_1 = pp_png_1.resize(value=460)
  390. bg_img = bg_img.to_overlay_pic_advance(
  391. mode="pixel",
  392. top_img=pp_jpg_1,
  393. base="cs",
  394. value=(0, 280),
  395. top_png_img=pp_png_1,
  396. )
  397. return bg_img
  398. def deal_pic_10(self):
  399. goods_art_no_list = list(self.data.keys())
  400. # 背景图
  401. bg_img = PictureProcessing(r"{}\10.jpg".format(self.root))
  402. # 长宽示例
  403. pp_jpg_1, pp_png_1 = self.image_one_pic(
  404. return_orign=True,
  405. goods_art_no=goods_art_no_list[0],
  406. name="俯视",
  407. )
  408. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  409. pp_png_1 = pp_png_1.transpose()
  410. pp_jpg_1 = pp_jpg_1.transpose()
  411. posy=2325
  412. if pp_jpg_1.height > pp_jpg_1.width:
  413. aheight =350
  414. # 等比计算目标宽度
  415. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  416. else:
  417. if pp_jpg_1.height > (pp_jpg_1.width/2):
  418. awidth = int(bg_img.width * 0.4)
  419. else:
  420. awidth = int(bg_img.width * 0.4)
  421. posy=2380
  422. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  423. pp_png_1 = pp_png_1.resize(value=awidth)
  424. bg_img = bg_img.to_overlay_pic_advance(
  425. mode="pixel",
  426. top_img=pp_jpg_1,
  427. base="cs",
  428. value=(-15, posy),
  429. top_png_img=pp_png_1,
  430. )
  431. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24) # 设计理念
  432. xiemian = self.get_text_value("商品面料") or "底层牛剖层革\n面层合成革"
  433. neili = self.get_text_value("商品内里") or "布里"
  434. xiedian = self.get_text_value("鞋垫") or "猪垫"
  435. xiedi = self.get_text_value("商品鞋底") or "橡胶"
  436. bg_img.get_text_image_advanced(
  437. value=(226, 1326),
  438. font=font_hei,
  439. text=xiemian,
  440. align="left",
  441. # anchor="ma",
  442. spacing=5,
  443. fill=(74, 74, 74),
  444. return_mode="image",
  445. margins=(0, 0, 0, 0),
  446. )
  447. bg_img.get_text_image_advanced(
  448. value=(722, 1326),
  449. font=font_hei,
  450. text=neili,
  451. align="left",
  452. # anchor="ma",
  453. spacing=5,
  454. fill=(74, 74, 74),
  455. return_mode="image",
  456. margins=(0, 0, 0, 0),
  457. )
  458. bg_img.get_text_image_advanced(
  459. value=(226, 1525),
  460. font=font_hei,
  461. text=xiedian,
  462. align="left",
  463. # anchor="ma",
  464. spacing=5,
  465. fill=(74, 74, 74),
  466. return_mode="image",
  467. margins=(0, 0, 0, 0),
  468. )
  469. bg_img.get_text_image_advanced(
  470. value=(722, 1525),
  471. font=font_hei,
  472. text=xiedi,
  473. align="left",
  474. # anchor="ma",
  475. spacing=5,
  476. fill=(74, 74, 74),
  477. return_mode="image",
  478. margins=(0, 0, 0, 0),
  479. )
  480. itemNo = self.goods_no_value["货号资料"][0]["货号"]
  481. bg_img.get_text_image_advanced(
  482. value=(226, 1728),
  483. font=font_hei,
  484. text=itemNo,
  485. align="left",
  486. # anchor="ma",
  487. spacing=5,
  488. fill=(74, 74, 74),
  489. return_mode="image",
  490. margins=(0, 0, 0, 0),
  491. )
  492. xiekuan = self.get_text_value("鞋宽") or "10.4CM"
  493. xiechang = self.get_text_value("鞋长") or "26.2CM"
  494. tonggao = self.get_text_value("筒高") or "13.2CM"
  495. gengao = self.get_text_value("跟高") or "4CM"
  496. tongziwei = self.get_text_value("筒口围") or "28CM"
  497. bg_img.get_text_image_advanced(
  498. value=(270, 770),
  499. font=font_hei,
  500. text="鞋宽"+xiekuan,
  501. align="left",
  502. # anchor="ma",
  503. spacing=5,
  504. fill=(74, 74, 74),
  505. return_mode="image",
  506. margins=(0, 0, 0, 0),
  507. )
  508. bg_img.get_text_image_advanced(
  509. value=(442, 1027),
  510. font=font_hei,
  511. text="鞋长"+xiechang,
  512. align="left",
  513. # anchor="ma",
  514. spacing=5,
  515. fill=(74, 74, 74),
  516. return_mode="image",
  517. margins=(0, 0, 0, 0),
  518. )
  519. bg_img.get_text_image_advanced(
  520. value=(770, 734),
  521. font=font_hei,
  522. text="筒高"+tonggao,
  523. align="left",
  524. # anchor="ma",
  525. spacing=5,
  526. fill=(74, 74, 74),
  527. return_mode="image",
  528. margins=(0, 0, 0, 0),
  529. )
  530. bg_img.get_text_image_advanced(
  531. value=(787, 875),
  532. font=font_hei,
  533. text="跟高"+gengao,
  534. align="left",
  535. # anchor="ma",
  536. spacing=5,
  537. fill=(74, 74, 74),
  538. return_mode="image",
  539. margins=(0, 0, 0, 0),
  540. )
  541. bg_img.get_text_image_advanced(
  542. value=(545, 557),
  543. font=font_hei,
  544. text="筒口围"+tongziwei,
  545. align="left",
  546. # anchor="ma",
  547. spacing=5,
  548. fill=(74, 74, 74),
  549. return_mode="image",
  550. margins=(0, 0, 0, 0),
  551. )
  552. # 底部三连鞋子带文字
  553. font_main = ImageFont.truetype(
  554. r"resources\ttf\puhui\Medium.ttf", 30
  555. )
  556. # length = len(goods_art_no_list)
  557. # if length==3:
  558. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  559. # return_orign=True,
  560. # goods_art_no=goods_art_no_list[0],
  561. # name="侧视",
  562. # )
  563. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  564. # pp_png_1 = pp_png_1.transpose()
  565. # pp_jpg_1 = pp_jpg_1.transpose()
  566. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  567. # pp_png_1 = pp_png_1.resize(value=250)
  568. # bg_img = bg_img.to_overlay_pic_advance(
  569. # mode="pixel",
  570. # top_img=pp_jpg_1,
  571. # base="cs",
  572. # value=(-320, 1240),
  573. # top_png_img=pp_png_1,
  574. # )
  575. #
  576. # bg_img.get_text_image_advanced(
  577. # value=(190, 2110),
  578. # font=font_main,
  579. # text=self.goods_no_value["货号资料"][0]["颜色名称"],
  580. # align="center",
  581. # # anchor="ma",
  582. # spacing=5,
  583. # fill=(0, 0, 0),
  584. # return_mode="image",
  585. # margins=(0, 0, 0, 0),
  586. # )
  587. #
  588. #
  589. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  590. # return_orign=True,
  591. # goods_art_no=goods_art_no_list[1],
  592. # name="侧视",
  593. # )
  594. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  595. # pp_png_1 = pp_png_1.transpose()
  596. # pp_jpg_1 = pp_jpg_1.transpose()
  597. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  598. # pp_png_1 = pp_png_1.resize(value=250)
  599. # bg_img = bg_img.to_overlay_pic_advance(
  600. # mode="pixel",
  601. # top_img=pp_jpg_1,
  602. # base="cs",
  603. # value=(0, 1240),
  604. # top_png_img=pp_png_1,
  605. # )
  606. #
  607. # bg_img.get_text_image_advanced(
  608. # value=(510, 2110),
  609. # font=font_main,
  610. # text=self.goods_no_value["货号资料"][1]["颜色名称"],
  611. # align="center",
  612. # # anchor="ma",
  613. # spacing=5,
  614. # fill=(0, 0, 0),
  615. # return_mode="image",
  616. # margins=(0, 0, 0, 0),
  617. # )
  618. #
  619. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  620. # return_orign=True,
  621. # goods_art_no=goods_art_no_list[2],
  622. # name="侧视",
  623. # )
  624. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  625. # pp_png_1 = pp_png_1.transpose()
  626. # pp_jpg_1 = pp_jpg_1.transpose()
  627. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  628. # pp_png_1 = pp_png_1.resize(value=250)
  629. # bg_img = bg_img.to_overlay_pic_advance(
  630. # mode="pixel",
  631. # top_img=pp_jpg_1,
  632. # base="cs",
  633. # value=(320, 1240),
  634. # top_png_img=pp_png_1,
  635. # )
  636. #
  637. # bg_img.get_text_image_advanced(
  638. # value=(830, 2110),
  639. # font=font_main,
  640. # text=self.goods_no_value["货号资料"][2]["颜色名称"],
  641. # align="center",
  642. # # anchor="ma",
  643. # spacing=5,
  644. # fill=(0, 0, 0),
  645. # return_mode="image",
  646. # margins=(0, 0, 0, 0),
  647. # )
  648. # elif length==2:
  649. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  650. # return_orign=True,
  651. # goods_art_no=goods_art_no_list[0],
  652. # name="侧视",
  653. # )
  654. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  655. # pp_png_1 = pp_png_1.transpose()
  656. # pp_jpg_1 = pp_jpg_1.transpose()
  657. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  658. # pp_png_1 = pp_png_1.resize(value=250)
  659. # bg_img = bg_img.to_overlay_pic_advance(
  660. # mode="pixel",
  661. # top_img=pp_jpg_1,
  662. # base="cs",
  663. # value=(-320, 1240),
  664. # top_png_img=pp_png_1,
  665. # )
  666. #
  667. # bg_img.get_text_image_advanced(
  668. # value=(190, 2110),
  669. # font=font_main,
  670. # text=self.goods_no_value["货号资料"][0]["颜色名称"],
  671. # align="center",
  672. # # anchor="ma",
  673. # spacing=5,
  674. # fill=(0, 0, 0),
  675. # return_mode="image",
  676. # margins=(0, 0, 0, 0),
  677. # )
  678. #
  679. #
  680. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  681. # return_orign=True,
  682. # goods_art_no=goods_art_no_list[1],
  683. # name="侧视",
  684. # )
  685. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  686. # pp_png_1 = pp_png_1.transpose()
  687. # pp_jpg_1 = pp_jpg_1.transpose()
  688. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  689. # pp_png_1 = pp_png_1.resize(value=250)
  690. # bg_img = bg_img.to_overlay_pic_advance(
  691. # mode="pixel",
  692. # top_img=pp_jpg_1,
  693. # base="cs",
  694. # value=(320, 1240),
  695. # top_png_img=pp_png_1,
  696. # )
  697. #
  698. # bg_img.get_text_image_advanced(
  699. # value=(830, 2110),
  700. # font=font_main,
  701. # text=self.goods_no_value["货号资料"][1]["颜色名称"],
  702. # align="center",
  703. # # anchor="ma",
  704. # spacing=5,
  705. # fill=(0, 0, 0),
  706. # return_mode="image",
  707. # margins=(0, 0, 0, 0),
  708. # )
  709. # elif length==1:
  710. # pp_jpg_1, pp_png_1 = self.image_one_pic(
  711. # return_orign=True,
  712. # goods_art_no=goods_art_no_list[0],
  713. # name="侧视",
  714. # )
  715. # if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  716. # pp_png_1 = pp_png_1.transpose()
  717. # pp_jpg_1 = pp_jpg_1.transpose()
  718. # pp_jpg_1 = pp_jpg_1.resize(value=250)
  719. # pp_png_1 = pp_png_1.resize(value=250)
  720. # bg_img = bg_img.to_overlay_pic_advance(
  721. # mode="pixel",
  722. # top_img=pp_jpg_1,
  723. # base="cs",
  724. # value=(0, 1240),
  725. # top_png_img=pp_png_1,
  726. # )
  727. #
  728. # bg_img.get_text_image_advanced(
  729. # value=(510, 2110),
  730. # font=font_main,
  731. # text=self.goods_no_value["货号资料"][0]["颜色名称"],
  732. # align="center",
  733. # # anchor="ma",
  734. # spacing=5,
  735. # fill=(0, 0, 0),
  736. # return_mode="image",
  737. # margins=(0, 0, 0, 0),
  738. # )
  739. font_2 = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 34) # 颜色名称
  740. color_pic_list_1 = []
  741. for goods_art_no_dict in self.goods_no_value["货号资料"]:
  742. color_name = goods_art_no_dict["颜色名称"]
  743. goods_art_no = goods_art_no_dict["货号"]
  744. pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no,
  745. color_name="侧视",
  746. bg_color=(247, 247, 247))
  747. pp_jpg = pp_jpg.resize(value=390)
  748. pp_jpg = pp_jpg.paste_img_invert(
  749. top_img=PictureProcessing("RGBA", (pp_jpg.width, pp_jpg.height + 70), (255, 255, 255, 0)),
  750. base="nw"
  751. )
  752. text_image = bg_img.get_text_image_advanced(font=font_2,
  753. text="{}".format(color_name),
  754. fill=(0, 0, 0),
  755. return_mode="min_image")
  756. pp_jpg = pp_jpg.paste_img(top_img=text_image, base="sc", value=(0, 10))
  757. color_pic_list_1.append(pp_jpg)
  758. # 颜色列表进行等分展示
  759. all_color_pp = PictureProcessing().horizontal_distribution(color_pic_list_1, bg_width=1114,
  760. line_spacing=10,
  761. number_per_row=3)
  762. bg_img = bg_img.to_overlay_pic_advance(
  763. mode="pixel",
  764. top_img=all_color_pp,
  765. base="cs",
  766. value=(0, 1150),
  767. top_png_img=all_color_pp,
  768. )
  769. return bg_img
  770. def deal_pic_11(self):
  771. goods_art_no_list = list(self.data.keys())
  772. # 背景图
  773. header_img = PictureProcessing(r"{}\11-1.jpg".format(self.root))
  774. bg_img = PictureProcessing("RGBA", (header_img.width, 3440), (255,255,255))
  775. # 贴顶部
  776. bg_img = bg_img.to_overlay_pic_advance(
  777. mode="pixel",
  778. top_img=header_img,
  779. base="nc",
  780. value=(0, 0),
  781. top_png_img=header_img,
  782. )
  783. # item1
  784. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  785. if len(goods_art_no_list)==3:
  786. pp_jpg_1, pp_png_1 = self.image_one_pic(
  787. return_orign=True,
  788. goods_art_no=goods_art_no_list[2],
  789. name="俯视",
  790. )
  791. aheight =400
  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=(-60, 300),
  804. top_png_img=pp_png_1,
  805. )
  806. if len(goods_art_no_list)>=2:
  807. pp_jpg_1, pp_png_1 = self.image_one_pic(
  808. return_orign=True,
  809. goods_art_no=goods_art_no_list[1],
  810. name="俯视",
  811. )
  812. aheight =400
  813. # 等比计算目标宽度
  814. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  815. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  816. pp_png_1 = pp_png_1.transpose()
  817. pp_jpg_1 = pp_jpg_1.transpose()
  818. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  819. pp_png_1 = pp_png_1.resize(value=awidth)
  820. item_img = item_img.to_overlay_pic_advance(
  821. mode="pixel",
  822. top_img=pp_jpg_1,
  823. base="cs",
  824. value=(0, 260),
  825. top_png_img=pp_png_1,
  826. )
  827. pp_jpg_1, pp_png_1 = self.image_one_pic(
  828. return_orign=True,
  829. goods_art_no=goods_art_no_list[0],
  830. name="俯视",
  831. )
  832. aheight =400
  833. # 等比计算目标宽度
  834. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  835. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  836. pp_png_1 = pp_png_1.transpose()
  837. pp_jpg_1 = pp_jpg_1.transpose()
  838. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  839. pp_png_1 = pp_png_1.resize(value=awidth)
  840. item_img = item_img.to_overlay_pic_advance(
  841. mode="pixel",
  842. top_img=pp_jpg_1,
  843. base="cs",
  844. value=(60, 220),
  845. top_png_img=pp_png_1,
  846. )
  847. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24)
  848. item_img.get_text_image_advanced(
  849. value=(436, 600),
  850. font=font_hei,
  851. text="正面45°/FRONT45°",
  852. align="left",
  853. # anchor="ma",
  854. spacing=5,
  855. fill=(0, 0, 0),
  856. return_mode="image",
  857. margins=(0, 0, 0, 0),
  858. )
  859. bg_img = bg_img.to_overlay_pic_advance(
  860. mode="pixel",
  861. top_img=item_img,
  862. base="nc",
  863. value=(0, 400),
  864. top_png_img=item_img,
  865. )
  866. # item2
  867. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  868. pp_jpg_1, pp_png_1 = self.image_one_pic(
  869. return_orign=True,
  870. goods_art_no=goods_art_no_list[0],
  871. name="后跟",
  872. )
  873. aheight =400
  874. # 等比计算目标宽度
  875. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  876. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  877. pp_png_1 = pp_png_1.resize(value=awidth)
  878. item_img = item_img.to_overlay_pic_advance(
  879. mode="pixel",
  880. top_img=pp_jpg_1,
  881. base="cs",
  882. value=(0, 220),
  883. top_png_img=pp_png_1,
  884. )
  885. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24)
  886. item_img.get_text_image_advanced(
  887. value=(436, 600),
  888. font=font_hei,
  889. text="背面45°/BACK45°",
  890. align="left",
  891. # anchor="ma",
  892. spacing=5,
  893. fill=(0, 0, 0),
  894. return_mode="image",
  895. margins=(0, 0, 0, 0),
  896. )
  897. bg_img = bg_img.to_overlay_pic_advance(
  898. mode="pixel",
  899. top_img=item_img,
  900. base="nc",
  901. value=(0, 400+760),
  902. top_png_img=item_img,
  903. )
  904. # item3
  905. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  906. pp_jpg_1, pp_png_1 = self.image_one_pic(
  907. return_orign=True,
  908. goods_art_no=goods_art_no_list[0],
  909. name="侧视",
  910. )
  911. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im)== True:
  912. pp_png_1 = pp_png_1.transpose()
  913. pp_jpg_1 = pp_jpg_1.transpose()
  914. aheight =380
  915. # 等比计算目标宽度
  916. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  917. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  918. pp_png_1 = pp_png_1.resize(value=awidth)
  919. item_img = item_img.to_overlay_pic_advance(
  920. mode="pixel",
  921. top_img=pp_jpg_1,
  922. base="cs",
  923. value=(0, 220),
  924. top_png_img=pp_png_1,
  925. )
  926. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24)
  927. item_img.get_text_image_advanced(
  928. value=(500, 600),
  929. font=font_hei,
  930. text="侧面/SIDE",
  931. align="left",
  932. # anchor="ma",
  933. spacing=5,
  934. fill=(0, 0, 0),
  935. return_mode="image",
  936. margins=(0, 0, 0, 0),
  937. )
  938. bg_img = bg_img.to_overlay_pic_advance(
  939. mode="pixel",
  940. top_img=item_img,
  941. base="nc",
  942. value=(0, 400+760*2),
  943. top_png_img=item_img,
  944. )
  945. # item4
  946. item_img = PictureProcessing("RGBA", (header_img.width, 760), (255,255,255))
  947. pp_jpg_1, pp_png_1 = self.image_one_pic(
  948. return_orign=True,
  949. goods_art_no=goods_art_no_list[0],
  950. name="内里",
  951. )
  952. pp_jpg_1 = pp_jpg_1.resize(value=530)
  953. pp_png_1 = pp_png_1.resize(value=530)
  954. ty=0
  955. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  956. pp_jpg_1 = pp_jpg_1.transpose()
  957. pp_png_1 = pp_png_1.transpose()
  958. ty=1
  959. pp_jpg_1=pp_jpg_1.rotate_advance(doge=90,is_crop=False)
  960. pp_png_1=pp_png_1.rotate_advance(doge=90,is_crop=False)
  961. if ty==1:
  962. pp_jpg_1 = pp_jpg_1.transpose()
  963. pp_png_1 = pp_png_1.transpose()
  964. item_img = item_img.to_overlay_pic_advance(
  965. mode="pixel",
  966. top_img=pp_png_1,
  967. base="cs",
  968. value=(0, -50),
  969. top_png_img=pp_png_1,
  970. )
  971. # pp_jpg_1 = pp_jpg_1.transpose()
  972. # pp_png_1 = pp_png_1.transpose()
  973. # item_img = item_img.to_overlay_pic_advance(
  974. # mode="pixel",
  975. # top_img=pp_png_1,
  976. # base="cs",
  977. # value=(120, -50),
  978. # top_png_img=pp_png_1,
  979. # )
  980. font_hei = ImageFont.truetype(r"resources\ttf\simhei.ttf", 24)
  981. item_img.get_text_image_advanced(
  982. value=(500, 600),
  983. font=font_hei,
  984. text="顶面/TOP",
  985. align="left",
  986. # anchor="ma",
  987. spacing=5,
  988. fill=(0, 0, 0),
  989. return_mode="image",
  990. margins=(0, 0, 0, 0),
  991. )
  992. bg_img = bg_img.to_overlay_pic_advance(
  993. mode="pixel",
  994. top_img=item_img,
  995. base="nc",
  996. value=(0, 400+760*3),
  997. top_png_img=item_img,
  998. )
  999. return bg_img
  1000. def deal_pic_12(self):
  1001. # 背景图
  1002. goods_art_no_list = list(self.data.keys())
  1003. # 背景图
  1004. bg_img = PictureProcessing(r"{}\12.jpg".format(self.root))
  1005. item_img = PictureProcessing("RGB", (404, 334), (247,247,247))
  1006. bg_img = bg_img.to_overlay_pic_advance(
  1007. mode="pixel",
  1008. top_img=item_img,
  1009. base="es",
  1010. value=(150, 180+2158),
  1011. top_png_img=item_img,
  1012. )
  1013. # item4
  1014. item_img = PictureProcessing("RGBA", (bg_img.width, 760), (255,255,255))
  1015. pp_jpg_1, pp_png_1 = self.image_one_pic(
  1016. return_orign=True,
  1017. goods_art_no=goods_art_no_list[0],
  1018. name="内里",
  1019. )
  1020. aheight =100
  1021. # 等比计算目标宽度
  1022. awidth = int(pp_jpg_1.width * aheight / pp_jpg_1.height)
  1023. pp_jpg_1 = pp_jpg_1.resize(value=awidth)
  1024. pp_png_1 = pp_png_1.resize(value=awidth)
  1025. ty=0
  1026. if self.check_shoe_is_right_by_pixel(im=pp_png_1.im) == False:
  1027. pp_jpg_1 = pp_jpg_1.transpose()
  1028. pp_png_1 = pp_png_1.transpose()
  1029. ty=1
  1030. pp_jpg_1=pp_jpg_1.rotate_advance(doge=90,is_crop=False)
  1031. pp_png_1=pp_png_1.rotate_advance(doge=90,is_crop=False)
  1032. if ty==1:
  1033. pp_jpg_1 = pp_jpg_1.transpose()
  1034. pp_png_1 = pp_png_1.transpose()
  1035. bg_img = bg_img.to_overlay_pic_advance(
  1036. mode="pixel",
  1037. top_img=pp_png_1,
  1038. base="es",
  1039. value=(-60+50,50+2158),
  1040. top_png_img=pp_png_1,
  1041. )
  1042. pp_jpg_1 = pp_jpg_1.transpose()
  1043. pp_png_1 = pp_png_1.transpose()
  1044. bg_img = bg_img.to_overlay_pic_advance(
  1045. mode="pixel",
  1046. top_img=pp_png_1,
  1047. base="es",
  1048. value=(60+50, 50+2158),
  1049. top_png_img=pp_png_1,
  1050. )
  1051. return bg_img