|
@@ -0,0 +1,453 @@
|
|
|
|
|
+"""
|
|
|
|
|
+步骤:
|
|
|
|
|
+1、整理需要处理的款号图-输出款号图文件夹
|
|
|
|
|
+2、整理所有相关的图片作为素材图
|
|
|
|
|
+3、按要求进行拼接
|
|
|
|
|
+"""
|
|
|
|
|
+import os
|
|
|
|
|
+import settings
|
|
|
|
|
+
|
|
|
|
|
+from PIL import ImageFont
|
|
|
|
|
+# from module.view_control.generate_goods_no_detail_pic.detail_generate_base import DetailBase
|
|
|
|
|
+# from module.view_control.generate_goods_no_detail_pic.pic_deal import PictureProcessing
|
|
|
|
|
+try:
|
|
|
|
|
+ is_test_plugins = settings.is_test_plugins
|
|
|
|
|
+except:
|
|
|
|
|
+ is_test_plugins = False
|
|
|
|
|
+
|
|
|
|
|
+if is_test_plugins:
|
|
|
|
|
+ from custom_plugins.plugins_mode.detail_generate_base import DetailBase
|
|
|
|
|
+ from custom_plugins.plugins_mode.pic_deal import PictureProcessing
|
|
|
|
|
+else:
|
|
|
|
|
+ from plugins_mode.detail_generate_base import DetailBase
|
|
|
|
|
+ from plugins_mode.pic_deal import PictureProcessing
|
|
|
|
|
+from PIL import Image, ImageDraw
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+plugins_name = "详情模板"
|
|
|
|
|
+company_name_list = ["小苏"]
|
|
|
|
|
+template_name = "xiaosushuoxie-7"
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class DetailPicGet(DetailBase):
|
|
|
|
|
+ need_view = ["俯视", "侧视", "后跟", "鞋底", "内里"]
|
|
|
|
|
+ root = r"{}\resources\detail_temp\xiaosushuoxie\7".format(os.getcwd())
|
|
|
|
|
+
|
|
|
|
|
+ def __init__(self, goods_no, goods_no_value: dict, out_put_dir, windows=None, test=False,excel_data=None,assigned_page_list=None):
|
|
|
|
|
+ super().__init__(goods_no, goods_no_value, out_put_dir, windows=windows,excel_data=excel_data,assigned_page_list=assigned_page_list)
|
|
|
|
|
+ self.root = r"{}\resources\detail_temp\xiaosushuoxie\7".format(os.getcwd())
|
|
|
|
|
+ self.template_name = template_name
|
|
|
|
|
+ self.base_bg_color = (236, 226, 211)
|
|
|
|
|
+ self.white_bg_color = (255, 255, 255)
|
|
|
|
|
+ self.deal_pic_func_list = [
|
|
|
|
|
+ self.deal_pic_1,
|
|
|
|
|
+ # self.deal_pic_2,
|
|
|
|
|
+ # self.deal_pic_3,
|
|
|
|
|
+ # self.deal_pic_4,
|
|
|
|
|
+ # self.deal_pic_5,
|
|
|
|
|
+ ]
|
|
|
|
|
+
|
|
|
|
|
+ if test:
|
|
|
|
|
+ self.run_test()
|
|
|
|
|
+ else:
|
|
|
|
|
+ self.run_all()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ def run_test(self):
|
|
|
|
|
+ detailed_images = []
|
|
|
|
|
+ detailed_images.append(self.deal_pic_1())
|
|
|
|
|
+ # detailed_images.append(self.deal_pic_2())
|
|
|
|
|
+ # detailed_images.append(self.deal_pic_3())
|
|
|
|
|
+ # detailed_images.append(self.deal_pic_4())
|
|
|
|
|
+ # detailed_images.append(self.deal_pic_5())
|
|
|
|
|
+ img = self.add_pic(detailed_images)
|
|
|
|
|
+ img.save(r"{}/{}.jpg".format(self.out_put_dir,self.goods_no, format="JPEG"))
|
|
|
|
|
+
|
|
|
|
|
+ def deal_pic_1(self):
|
|
|
|
|
+ """ 制作主图 """
|
|
|
|
|
+ detailed_images = []
|
|
|
|
|
+ pp_bg = PictureProcessing(r"{}\template_1.jpg".format(self.root))
|
|
|
|
|
+ # -------粘贴文字-------
|
|
|
|
|
+ mainTitle = self.get_text_value("主标题")
|
|
|
|
|
+ subTitle = self.get_text_value("副标题")
|
|
|
|
|
+ signTitle = self.get_text_value("签名")
|
|
|
|
|
+ fontMain = ImageFont.truetype(r"resources\ttf\DOUYINSANSBOLD.ttf", 240)
|
|
|
|
|
+ fontSub = ImageFont.truetype(r"resources\ttf\puhui\Regular.ttf", 40)
|
|
|
|
|
+ fontSign = ImageFont.truetype(r"resources\ttf\puhui\en\Bold.otf", 40)
|
|
|
|
|
+ main_text_bg = PictureProcessing("RGBA", (pp_bg.width, 500), (255, 255, 255,0))
|
|
|
|
|
+ main_text_bg = main_text_bg.get_text_image_advanced(
|
|
|
|
|
+ value=(0, 0),
|
|
|
|
|
+ font=fontMain,
|
|
|
|
|
+ text=mainTitle,
|
|
|
|
|
+ align="center",
|
|
|
|
|
+ fill=self.white_bg_color,
|
|
|
|
|
+ spacing=5,
|
|
|
|
|
+ return_mode="min_image",
|
|
|
|
|
+ )
|
|
|
|
|
+ # 副标题
|
|
|
|
|
+ sub_text_bg = PictureProcessing("RGBA", (pp_bg.width, 500), (255, 255, 255,0))
|
|
|
|
|
+ sub_text_bg = sub_text_bg.get_text_image_advanced(
|
|
|
|
|
+ value=(0, 0),
|
|
|
|
|
+ font=fontSub,
|
|
|
|
|
+ text=subTitle,
|
|
|
|
|
+ align="center",
|
|
|
|
|
+ fill=self.white_bg_color,
|
|
|
|
|
+ spacing=5,
|
|
|
|
|
+ return_mode="min_image",
|
|
|
|
|
+ )
|
|
|
|
|
+ # 签名
|
|
|
|
|
+ sign_text_bg = PictureProcessing("RGBA", (pp_bg.width, 500), (255, 255, 255,0))
|
|
|
|
|
+ sign_text_bg = sign_text_bg.get_text_image_advanced(
|
|
|
|
|
+ value=(0, 0),
|
|
|
|
|
+ font=fontSign,
|
|
|
|
|
+ text=signTitle,
|
|
|
|
|
+ align="center",
|
|
|
|
|
+ fill=self.white_bg_color,
|
|
|
|
|
+ spacing=5,
|
|
|
|
|
+ return_mode="min_image",
|
|
|
|
|
+ )
|
|
|
|
|
+ pp_bg = pp_bg.paste_img(top_img=main_text_bg,value=(0,208),base='nc')
|
|
|
|
|
+ pp_bg = pp_bg.paste_img(top_img=sub_text_bg,value=(0,470),base='nc')
|
|
|
|
|
+ pp_bg = pp_bg.paste_img(top_img=sign_text_bg,value=(0,57),base='nc')
|
|
|
|
|
+ detailed_images.append(pp_bg)
|
|
|
|
|
+ return PictureProcessing(im=self.add_pic(detailed_images))
|
|
|
|
|
+
|
|
|
|
|
+ def deal_pic_2(self):
|
|
|
|
|
+ """
|
|
|
|
|
+ 细节解析
|
|
|
|
|
+ """
|
|
|
|
|
+ # 文字排列
|
|
|
|
|
+ detailed_images = []
|
|
|
|
|
+ pp_bg = PictureProcessing(
|
|
|
|
|
+ r"{}\template_2.png".format(
|
|
|
|
|
+ self.root
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ detailed_images.append(pp_bg)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ goods_art_no_list = list(self.data.keys())
|
|
|
|
|
+
|
|
|
|
|
+ pp_1 = self.get_overlay_pic_from_dict(
|
|
|
|
|
+ goods_art_no=goods_art_no_list[0],
|
|
|
|
|
+ color_name="侧视",
|
|
|
|
|
+ bg_color=self.base_bg_color,
|
|
|
|
|
+ )
|
|
|
|
|
+ pp_1= pp_1.resize(value=pp_bg.width / 1.4)
|
|
|
|
|
+ pp_1= pp_1.paste_img_invert(top_img=PictureProcessing("RGB", (pp_bg.width, pp_1.height + 40), self.base_bg_color),
|
|
|
|
|
+ base="cc"
|
|
|
|
|
+ )
|
|
|
|
|
+ detailed_images.append(pp_1)
|
|
|
|
|
+
|
|
|
|
|
+ pp_bg_bottom = PictureProcessing(r"{}\template_2_1.png".format(self.root))
|
|
|
|
|
+ detailed_images.append(pp_bg_bottom)
|
|
|
|
|
+ return PictureProcessing(im=self.add_pic(detailed_images))
|
|
|
|
|
+
|
|
|
|
|
+ def deal_pic_3(self):
|
|
|
|
|
+ """ 各个颜色细节展示 """
|
|
|
|
|
+ detailed_images = []
|
|
|
|
|
+ pp_bg = PictureProcessing(
|
|
|
|
|
+ r"{}\template_3.png".format(
|
|
|
|
|
+ self.root
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ detailed_images.append(pp_bg)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ # ----------主图放置
|
|
|
|
|
+ y = 120
|
|
|
|
|
+ pp_list_1 = []
|
|
|
|
|
+ font = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 25)
|
|
|
|
|
+ goods_art_no_list = list(self.data.keys())
|
|
|
|
|
+
|
|
|
|
|
+ all_color_name = []
|
|
|
|
|
+ for index, goods_art_no in enumerate(goods_art_no_list):
|
|
|
|
|
+ pp_jpg = self.get_overlay_pic_from_dict(
|
|
|
|
|
+ goods_art_no=goods_art_no,
|
|
|
|
|
+ color_name="侧视",
|
|
|
|
|
+ bg_color=self.base_bg_color,
|
|
|
|
|
+ )
|
|
|
|
|
+ if pp_jpg is None:
|
|
|
|
|
+ continue
|
|
|
|
|
+ pp_jpg = pp_jpg.resize(value=440)
|
|
|
|
|
+ color_name = self.goods_no_value["货号资料"][index]["颜色名称"]
|
|
|
|
|
+ all_color_name.append(color_name)
|
|
|
|
|
+ text_bg = PictureProcessing("RGB", (440, 200), (255, 255, 255))
|
|
|
|
|
+ text_bg = text_bg.get_text_image_advanced(
|
|
|
|
|
+ value=(220, 10),
|
|
|
|
|
+ font=font,
|
|
|
|
|
+ text="【{}】".format(color_name),
|
|
|
|
|
+ align="center",
|
|
|
|
|
+ anchor="mm",
|
|
|
|
|
+ spacing=5,
|
|
|
|
|
+ fill=(55, 55, 55),
|
|
|
|
|
+ return_mode="min_image_high",
|
|
|
|
|
+ margins=(10, 5, 0, 0)
|
|
|
|
|
+ )
|
|
|
|
|
+ # text_bg.show()
|
|
|
|
|
+ _bg = PictureProcessing("RGB", (440, pp_jpg.height+text_bg.height), (255, 255, 255))
|
|
|
|
|
+ _bg = _bg.paste_img(top_img=pp_jpg)
|
|
|
|
|
+ _bg = _bg.paste_img(top_img=text_bg,value=(0,pp_jpg.height))
|
|
|
|
|
+ pp_list_1.append(_bg)
|
|
|
|
|
+
|
|
|
|
|
+ rows = 2
|
|
|
|
|
+ shoes_bg = PictureProcessing().horizontal_distribution(
|
|
|
|
|
+ pp_list=pp_list_1,
|
|
|
|
|
+ bg_width=1200,
|
|
|
|
|
+ margins=(0, 0, 40, 40),
|
|
|
|
|
+ line_spacing=60,
|
|
|
|
|
+ number_per_row=rows,
|
|
|
|
|
+ )
|
|
|
|
|
+ detailed_images.append(shoes_bg)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ font_bg = PictureProcessing(r"{}\template_3_1_new.png".format(self.root))
|
|
|
|
|
+ font = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 30)
|
|
|
|
|
+ base_x = pp_bg.width - 229
|
|
|
|
|
+ base_y = 205
|
|
|
|
|
+
|
|
|
|
|
+ text_list = [
|
|
|
|
|
+ ("-{}".format("-".join(all_color_name)), (base_x, base_y)),
|
|
|
|
|
+ ("-{}".format(self.get_text_value("鞋面材质")), (base_x, base_y+70*1)),
|
|
|
|
|
+ ("-{}".format(self.get_text_value("内里材质")), (base_x, base_y+70*2)),
|
|
|
|
|
+ ("-{}".format(self.get_text_value("鞋底材质")), (base_x, base_y+70*3)),
|
|
|
|
|
+ ("-{}".format(self.get_text_value("鞋垫材质")), (base_x, base_y+70*4 )),
|
|
|
|
|
+ ("-{}".format(self.get_text_value("跟高")), (base_x, base_y+70*5)),
|
|
|
|
|
+ ("-{}".format(self.get_text_value("尺码")), (base_x, base_y+70*6)),
|
|
|
|
|
+ ]
|
|
|
|
|
+ for text_item in text_list:
|
|
|
|
|
+ position = text_item[1]
|
|
|
|
|
+ text_str = text_item[0]
|
|
|
|
|
+ xPos = position[0]
|
|
|
|
|
+ for char in reversed(text_str):
|
|
|
|
|
+ font_bg.add_text(
|
|
|
|
|
+ mode="pixel",
|
|
|
|
|
+ value=(xPos, position[1]),
|
|
|
|
|
+ font=font,
|
|
|
|
|
+ text=char,
|
|
|
|
|
+ align="right",
|
|
|
|
|
+ anchor="mm",
|
|
|
|
|
+ spacing=10,
|
|
|
|
|
+ fill=(30, 30, 30),
|
|
|
|
|
+ )
|
|
|
|
|
+ if not "\u4e00" <= char <= "\u9fff":
|
|
|
|
|
+ xPos -= 20
|
|
|
|
|
+ else:
|
|
|
|
|
+ xPos -= 35
|
|
|
|
|
+ # 其他图片
|
|
|
|
|
+ detailed_images.append(font_bg)
|
|
|
|
|
+ return PictureProcessing(im=self.add_pic(detailed_images))
|
|
|
|
|
+
|
|
|
|
|
+ def deal_pic_4(self):
|
|
|
|
|
+ # =============设计理念================
|
|
|
|
|
+ detail_images = []
|
|
|
|
|
+ top_bg = PictureProcessing(r"{}\template_4.png".format(self.root))
|
|
|
|
|
+ detail_images.append(top_bg)
|
|
|
|
|
+
|
|
|
|
|
+ font_1 = ImageFont.truetype(r"resources\ttf\puhui\Bold.ttf", 40)
|
|
|
|
|
+ # 粘贴文字
|
|
|
|
|
+ text = self.get_text_value("设计理念")
|
|
|
|
|
+ if not text:
|
|
|
|
|
+ text = "引领全新裸足脚感,开启自信步履亲肤\n优质鞋面材质赋予全新舒适脚感\n多元场景穿搭,满足你的不同STYLE"
|
|
|
|
|
+ _, text_height = self.get_font_render_size(text, font_1)
|
|
|
|
|
+ text_bg = PictureProcessing(
|
|
|
|
|
+ "RGB",
|
|
|
|
|
+ (
|
|
|
|
|
+ top_bg.width,
|
|
|
|
|
+ text_height + 350,
|
|
|
|
|
+ ),
|
|
|
|
|
+ (236, 227, 212),
|
|
|
|
|
+ )
|
|
|
|
|
+ goods_art_no_list = list(self.data.keys())
|
|
|
|
|
+ # y = 430
|
|
|
|
|
+
|
|
|
|
|
+ x = top_bg.width / 2
|
|
|
|
|
+ text_bg = text_bg.add_text(
|
|
|
|
|
+ mode="pixel",
|
|
|
|
|
+ value=(x, int(text_bg.height / 2) - 60),
|
|
|
|
|
+ font=font_1,
|
|
|
|
|
+ text=text,
|
|
|
|
|
+ align="center",
|
|
|
|
|
+ anchor="mm",
|
|
|
|
|
+ spacing=15,
|
|
|
|
|
+ fill=(97, 97, 98),
|
|
|
|
|
+ )
|
|
|
|
|
+ detail_images.append(text_bg)
|
|
|
|
|
+
|
|
|
|
|
+ # ==========3个提示信息=========
|
|
|
|
|
+ title_font = ImageFont.truetype(r"resources\ttf\puhui\Heavy.ttf", 60)
|
|
|
|
|
+ sub_title_font = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 30)
|
|
|
|
|
+ desc_font = ImageFont.truetype(r"resources\ttf\puhui\Heavy.ttf", 35)
|
|
|
|
|
+ color_name_list = ["俯视", "内里", "侧视"]
|
|
|
|
|
+ # 添加分割线
|
|
|
|
|
+ detail_images.append(PictureProcessing("RGB", (top_bg.width, 100), (255, 255, 255)))
|
|
|
|
|
+
|
|
|
|
|
+ for index, color_name in enumerate(color_name_list):
|
|
|
|
|
+ # 添加分割线
|
|
|
|
|
+ detail_images.append(PictureProcessing("RGB", (top_bg.width, 20), (255, 255, 255)))
|
|
|
|
|
+
|
|
|
|
|
+ t_title = self.get_text_value("提示{}主标题".format(index + 1))
|
|
|
|
|
+ if t_title:
|
|
|
|
|
+ t_title_pp = PictureProcessing("RGB", (top_bg.width, 500), (255, 255, 255))
|
|
|
|
|
+ t_title_pp=t_title_pp.get_text_image_advanced(
|
|
|
|
|
+ value=(int(top_bg.width / 2), 0),
|
|
|
|
|
+ font=title_font,
|
|
|
|
|
+ text=t_title,
|
|
|
|
|
+ align="center",
|
|
|
|
|
+ anchor="ma",
|
|
|
|
|
+ spacing=10,
|
|
|
|
|
+ fill=(55, 55, 55),
|
|
|
|
|
+ return_mode="min_image_high",
|
|
|
|
|
+ margins=(10, 10, 0, 0)
|
|
|
|
|
+ )
|
|
|
|
|
+ detail_images.append(t_title_pp)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ t_sub_title = self.get_text_value("提示{}副标题".format(index + 1))
|
|
|
|
|
+ if t_sub_title:
|
|
|
|
|
+ t_sub_title_pp = PictureProcessing("RGB", (top_bg.width, 500), (255, 255, 255))
|
|
|
|
|
+ t_sub_title_pp = t_sub_title_pp.get_text_image_advanced(
|
|
|
|
|
+ value=(int(top_bg.width / 2),0),
|
|
|
|
|
+ font=sub_title_font,
|
|
|
|
|
+ text=t_sub_title,
|
|
|
|
|
+ align="center",
|
|
|
|
|
+ anchor="ma",
|
|
|
|
|
+ spacing=10,
|
|
|
|
|
+ fill=(55, 55, 55),
|
|
|
|
|
+ return_mode="min_image_high",
|
|
|
|
|
+ margins=(10, 10, 0, 0)
|
|
|
|
|
+ )
|
|
|
|
|
+ detail_images.append(t_sub_title_pp)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ # 添加图
|
|
|
|
|
+ pp_jpg = self.get_overlay_pic_from_dict(
|
|
|
|
|
+ goods_art_no=goods_art_no_list[0],
|
|
|
|
|
+ color_name=color_name,
|
|
|
|
|
+ bg_color=self.base_bg_color
|
|
|
|
|
+ )
|
|
|
|
|
+ t_desc = self.get_text_value("提示{}描述".format(index + 1))
|
|
|
|
|
+ if color_name == "俯视":
|
|
|
|
|
+ pp_jpg = pp_jpg.resize(value=1300)
|
|
|
|
|
+ pp_jpg = pp_jpg.paste_img_invert(
|
|
|
|
|
+ top_img=PictureProcessing("RGB", (749, 1009 if pp_jpg.height>1009 else pp_jpg.height), (236, 227, 212)), base="ws",
|
|
|
|
|
+ value=(-300, -50))
|
|
|
|
|
+ text_pos_value = (50, 50)
|
|
|
|
|
+ align = "left"
|
|
|
|
|
+ anchor = ""
|
|
|
|
|
+
|
|
|
|
|
+ if color_name == "内里":
|
|
|
|
|
+ pp_jpg = pp_jpg.resize(value=2000)
|
|
|
|
|
+ pp_jpg = pp_jpg.paste_img_invert(
|
|
|
|
|
+ top_img=PictureProcessing("RGB", (749, pp_jpg.height + 150), (236, 227, 212)), base="wc",
|
|
|
|
|
+ value=(-230, 0))
|
|
|
|
|
+ text_pos_value = (50, 50)
|
|
|
|
|
+ align = "left"
|
|
|
|
|
+ anchor = ""
|
|
|
|
|
+
|
|
|
|
|
+ if color_name == "侧视":
|
|
|
|
|
+ pp_jpg = pp_jpg.resize(value=1600)
|
|
|
|
|
+ pp_jpg = pp_jpg.paste_img_invert(
|
|
|
|
|
+ top_img=PictureProcessing("RGB", (749, 1009 if pp_jpg.height>1009 else pp_jpg.height), (236, 227, 212)), base="se",
|
|
|
|
|
+ value=(0, -30))
|
|
|
|
|
+ text_pos_value = (pp_jpg.width - 30, pp_jpg.height - 360)
|
|
|
|
|
+ align = "right"
|
|
|
|
|
+ anchor = "rs"
|
|
|
|
|
+
|
|
|
|
|
+ if t_desc:
|
|
|
|
|
+ pp_jpg = pp_jpg.add_text(
|
|
|
|
|
+ mode="pixel",
|
|
|
|
|
+ value=text_pos_value,
|
|
|
|
|
+ font=desc_font,
|
|
|
|
|
+ text=t_desc,
|
|
|
|
|
+ align=align,
|
|
|
|
|
+ anchor=anchor,
|
|
|
|
|
+ spacing=10,
|
|
|
|
|
+ fill=(102, 102, 102),
|
|
|
|
|
+ )
|
|
|
|
|
+ pp_jpg = pp_jpg.paste_img_invert(
|
|
|
|
|
+ top_img=PictureProcessing("RGB", (top_bg.width, pp_jpg.height,), (255, 255, 255), ), base="cc",
|
|
|
|
|
+ value=(0, 0))
|
|
|
|
|
+ detail_images.append(pp_jpg)
|
|
|
|
|
+ # 添加分割线
|
|
|
|
|
+ detail_images.append(PictureProcessing("RGB", (top_bg.width, 60), (255, 255, 255), ))
|
|
|
|
|
+
|
|
|
|
|
+ # 添加分割线
|
|
|
|
|
+ detail_images.append(PictureProcessing("RGB", (top_bg.width, 100), (255, 255, 255), ))
|
|
|
|
|
+ image = PictureProcessing(im=self.add_pic(detail_images))
|
|
|
|
|
+ return image
|
|
|
|
|
+
|
|
|
|
|
+ def deal_pic_5(self):
|
|
|
|
|
+ bg_color = (255, 255, 255)
|
|
|
|
|
+ detailed_images = []
|
|
|
|
|
+ goods_art_no_list = list(self.data.keys())
|
|
|
|
|
+ top_bg = PictureProcessing(
|
|
|
|
|
+ r"{}\template_5.png".format(
|
|
|
|
|
+ self.root
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ detailed_images.append(top_bg)
|
|
|
|
|
+ pp_list_1 = []
|
|
|
|
|
+ color_name_1 = ["俯视", "侧视", "内里", "后跟", "鞋底"]
|
|
|
|
|
+ color_name_2 = ["俯视", "鞋底"]
|
|
|
|
|
+
|
|
|
|
|
+ color_name_1 = ["俯视", "侧视", "鞋底"]
|
|
|
|
|
+ color_name_2 = ["俯视", "内里", "后跟"]
|
|
|
|
|
+ n = 0
|
|
|
|
|
+ pp_1_height = 100
|
|
|
|
|
+
|
|
|
|
|
+ for index, goods_art_no in enumerate(goods_art_no_list):
|
|
|
|
|
+ if index in [0, 2, 4, 6, 8]:
|
|
|
|
|
+ color_name = color_name_1
|
|
|
|
|
+ else:
|
|
|
|
|
+ color_name = color_name_2
|
|
|
|
|
+
|
|
|
|
|
+ for name in color_name:
|
|
|
|
|
+ pp_1 = self.get_overlay_pic_from_dict(
|
|
|
|
|
+ goods_art_no=goods_art_no,
|
|
|
|
|
+ color_name=name,
|
|
|
|
|
+ bg_color=self.base_bg_color
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ if pp_1:
|
|
|
|
|
+ n += 1
|
|
|
|
|
+ if name != "后跟":
|
|
|
|
|
+ pp_1 = pp_1.resize(value=int(top_bg.width / 1.4))
|
|
|
|
|
+ else:
|
|
|
|
|
+ pp_1 = pp_1.resize(value=int(top_bg.width / 3))
|
|
|
|
|
+
|
|
|
|
|
+ if n == 1:
|
|
|
|
|
+ pp_1_height = pp_1.height
|
|
|
|
|
+
|
|
|
|
|
+ _height = pp_1.height if pp_1.height > pp_1_height else pp_1_height
|
|
|
|
|
+
|
|
|
|
|
+ pp_1 = pp_1.paste_img_invert(base="cc",
|
|
|
|
|
+ top_img=PictureProcessing("RGB",
|
|
|
|
|
+ (int(top_bg.width / 1.4), _height + 10,),
|
|
|
|
|
+ self.base_bg_color))
|
|
|
|
|
+
|
|
|
|
|
+ pp_1 = pp_1.paste_img_invert(base="cc",
|
|
|
|
|
+ top_img=PictureProcessing("RGB",
|
|
|
|
|
+ (top_bg.width, _height + 100,),
|
|
|
|
|
+ (255, 255, 255)))
|
|
|
|
|
+
|
|
|
|
|
+ pp_list_1.append(pp_1)
|
|
|
|
|
+
|
|
|
|
|
+ if pp_list_1:
|
|
|
|
|
+ pp_list_1.append(PictureProcessing("RGB", (top_bg.width, 100), bg_color))
|
|
|
|
|
+ detailed_images.extend(pp_list_1)
|
|
|
|
|
+
|
|
|
|
|
+ # return PictureProcessing(im=self.add_pic(detailed_images))
|
|
|
|
|
+ return self.pp_pic_subsection(PictureProcessing(im=self.add_pic(detailed_images)))
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ def get_font_render_size(self, text, font, canvas_size=(2048, 2048)):
|
|
|
|
|
+ canvas = Image.new('RGB', canvas_size)
|
|
|
|
|
+ draw = ImageDraw.Draw(canvas)
|
|
|
|
|
+ draw.text((0, 0), text, font=font, fill=(55, 55, 55))
|
|
|
|
|
+ bbox = canvas.getbbox()
|
|
|
|
|
+ # 宽高
|
|
|
|
|
+ size = (bbox[2] - bbox[0], bbox[3] - bbox[1])
|
|
|
|
|
+ return size
|
|
|
|
|
+
|