Browse Source

xinnuo模板更新

rambo 6 months ago
parent
commit
48c5d55bee

+ 325 - 159
python/custom_plugins/plugins/detail_template/xinnuo/detail_xinnuo1.py

@@ -33,7 +33,7 @@ template_name = "xinnuo-1"
 
 class DetailPicGet(DetailBase):
     need_view = ["俯视", "侧视", "后跟", "鞋底", "内里","组合","组合2","组合3"]
-    root = r"{}\resources\detail_temp\xinnuo\1".format(os.getcwd())
+    root = r"{}\resources\detail_temp\xinnuo\2".format(os.getcwd())
 
     def __init__(
         self,
@@ -55,7 +55,7 @@ class DetailPicGet(DetailBase):
         )
         self.template_name = template_name
 
-        self.root = r"{}\resources\detail_temp\xinnuo\1".format(os.getcwd())
+        self.root = r"{}\resources\detail_temp\xinnuo\2".format(os.getcwd())
         print("run xinnuo-1 ")
         self.base_bg_color = (255, 255, 255)
         self.base_bg_color_2 = (244, 242, 243)
@@ -72,13 +72,11 @@ class DetailPicGet(DetailBase):
             self.deal_pic_10,
             self.deal_pic_11,
             self.deal_pic_13,
-            self.deal_pic_14,
-            self.deal_pic_15,
-            self.deal_pic_16,
             self.deal_pic_17,
             self.deal_pic_18,
             self.deal_pic_19,
             self.deal_pic_20,
+            self.deal_pic_21,
         ]
 
         if test:
@@ -104,26 +102,24 @@ class DetailPicGet(DetailBase):
         detailed_images.append(self.deal_pic_10())
         detailed_images.append(self.deal_pic_11())
         detailed_images.append(self.deal_pic_13())
-        detailed_images.append(self.deal_pic_14())
-        detailed_images.append(self.deal_pic_15())
-        detailed_images.append(self.deal_pic_16())
         detailed_images.append(self.deal_pic_17())
         detailed_images.append(self.deal_pic_18())
         detailed_images.append(self.deal_pic_19())
         detailed_images.append(self.deal_pic_20())
+        detailed_images.append(self.deal_pic_21())
 
         img = self.add_pic(detailed_images)
         img.save(r"{}/{}.jpg".format(self.out_put_dir, self.goods_no, format="JPEG"))
-        # img.show()
+        img.show()
 
     # 标题文字展示
     def deal_pic_1(self):
-        pp_bg = PictureProcessing(r"{}\1.jpg".format(self.root))
+        pp_bg = PictureProcessing(r"{}\1.jpg".format(self.root),1600)
         font_main = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 102)  # 设计理念
         mainTitle = self.get_text_value("主标题")
         subTitle = self.get_text_value("副标题")
         pp_bg.get_text_image_advanced(
-            value=(336, 102),
+            value=(336, 95),
             font=font_main,
             text=mainTitle,
             align="left",
@@ -137,7 +133,7 @@ class DetailPicGet(DetailBase):
             r"resources\ttf\puhui\Bold.ttf", 40
         )  # 设计理念
         pp_bg.get_text_image_advanced(
-            value=(82, 102),
+            value=(82, 95),
             font=font_sub,
             text=subTitle,
             align="left",
@@ -147,31 +143,65 @@ class DetailPicGet(DetailBase):
             return_mode="image",
             margins=(0, 0, 0, 0),
         )
+        goods_art_no_list = list(self.data.keys())
+        pp_jpg_1, pp_png_1 = self.image_one_pic(
+            return_orign=True,
+            goods_art_no=goods_art_no_list[0],
+            name="俯视",
+        )
+        if self.check_shoe_is_right_by_pixel(im=pp_png_1.im):
+            pp_jpg_1 = pp_jpg_1.transpose()
+            pp_png_1 = pp_png_1.transpose()
+        pp_jpg_1 = pp_jpg_1.resize(value=pp_bg.width/1.1)
+        pp_png_1 = pp_png_1.resize(value=pp_bg.width / 1.1)
+        pp_bg = pp_bg.to_overlay_pic_advance(
+            top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs", value=(-50, 190)
+        )
+        pp_bg = pp_bg.to_overlay_pic_advance(
+            top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs", value=(50, 130)
+        )
         return pp_bg
 
     # 展示鞋头和后跟
     def deal_pic_2(self):
-        pp_bg = PictureProcessing(r"{}\2.jpg".format(self.root))
+        pp_bg = PictureProcessing(r"{}\2.jpg".format(self.root), 1600)
         font = ImageFont.truetype(
             r"resources\ttf\puhui\Regular.ttf", 24
         )  # 设计理念
         design_text = self.get_text_value("设计理念")
-        pp_bg.get_text_image_advanced(
-            value=(226, 359),
+        text_bg = PictureProcessing("RGBA", (pp_bg.width, 200), (255,255,255,0))
+        text_bg = text_bg.get_text_image_advanced(
+            value=(0, 0),
             font=font,
             text=design_text,
             align="center",
-            # anchor="ma",
             spacing=20,
             fill=(88, 52, 28),
-            return_mode="image",
-            margins=(0, 0, 0, 0),
+            return_mode="min_image",
+        )
+        pp_bg = pp_bg.paste_img(top_img=text_bg, base="nc", value=(0, 359))
+        goods_art_no_list = list(self.data.keys())
+        pp_jpg_1, pp_png_1 = self.image_one_pic(
+            return_orign=True,
+            goods_art_no=goods_art_no_list[0],
+            name="组合",
+        )
+        if pp_jpg_1 == None:
+            pp_jpg_1, pp_png_1 = self.image_one_pic(
+                return_orign=True,
+                goods_art_no=goods_art_no_list[0],
+                name="俯视",
+            )
+        pp_jpg_1 = pp_jpg_1.resize(value=pp_bg.width)
+        pp_png_1 = pp_png_1.resize(value=pp_bg.width)
+        pp_bg = pp_bg.to_overlay_pic_advance(
+            top_img=pp_jpg_1, top_png_img=pp_png_1, base="cs", value=(0, 315)
         )
         return pp_bg
 
     # 展示鞋头放大图
     def deal_pic_3(self):
-        pp_bg = PictureProcessing(r"{}\3.jpg".format(self.root))
+        pp_bg = PictureProcessing(r"{}\3.jpg".format(self.root),1600)
         goods_art_no_list = list(self.data.keys())
         pp_jpg_1, pp_png_1 = self.image_one_pic(
             return_orign=True,
@@ -184,8 +214,8 @@ class DetailPicGet(DetailBase):
         pp_bg = pp_bg.to_overlay_pic_advance(
             mode="pixel",
             top_img=pp_jpg_1,
-            base="es",
-            value=(80, 230),
+            base="sw",
+            value=(-pp_bg.width - 100, 280),
             top_png_img=pp_png_1,
         )
         return pp_bg
@@ -205,11 +235,19 @@ class DetailPicGet(DetailBase):
     def deal_pic_6(self):
         pp_bg = PictureProcessing(r"{}\6.jpg".format(self.root))
         goods_art_no_list = list(self.data.keys())
+        goods_art = goods_art_no_list[0]
         pp_jpg_1, pp_png_1 = self.image_one_pic(
             return_orign=True,
-            goods_art_no=goods_art_no_list[0],
-            name="俯视",
+            goods_art_no=goods_art,
+            name="组合2",
         )
+        if pp_jpg_1 == None:
+            pp_jpg_1, pp_png_1 = self.image_one_pic(
+                return_orign=True,
+                goods_art_no=goods_art,
+                name="俯视",
+            )
+
         pp_jpg_1 = pp_jpg_1.resize(value=pp_bg.width/1.4)
         pp_png_1 = pp_png_1.resize(value=pp_bg.width / 1.4)
         # pp_bg = pp_bg.paste_img(top_img=shoe_bg, value=(0, 0), base="nw")
@@ -237,8 +275,8 @@ class DetailPicGet(DetailBase):
         pp_bg = pp_bg.to_overlay_pic_advance(
             mode="pixel",
             top_img=pp_jpg_1,
-            base="es",
-            value=(200, 208),
+            base="sw",
+            value=(123, 237),
             top_png_img=pp_png_1,
         )
         font = ImageFont.truetype(
@@ -253,7 +291,7 @@ class DetailPicGet(DetailBase):
         banggao = self.get_text_value("帮高")
         gengao = self.get_text_value("跟高")
         pp_bg.get_text_image_advanced(
-            value=(230, 346),
+            value=(230, 351),
             font=font,
             text=bangmian,
             align="left",
@@ -264,7 +302,7 @@ class DetailPicGet(DetailBase):
             margins=(0, 0, 0, 0),
         )
         pp_bg.get_text_image_advanced(
-            value=(551, 346),
+            value=(551, 351),
             font=font,
             text=neili,
             align="left",
@@ -275,7 +313,7 @@ class DetailPicGet(DetailBase):
             margins=(0, 0, 0, 0),
         )
         pp_bg.get_text_image_advanced(
-            value=(230, 456),
+            value=(230, 461),
             font=font,
             text=xiedi,
             align="left",
@@ -286,7 +324,7 @@ class DetailPicGet(DetailBase):
             margins=(0, 0, 0, 0),
         )
         pp_bg.get_text_image_advanced(
-            value=(551, 456),
+            value=(551, 461),
             font=font,
             text=xiedian,
             align="left",
@@ -299,7 +337,7 @@ class DetailPicGet(DetailBase):
         pp_bg.get_text_image_advanced(
             value=(64, 901),
             font=font_hei,
-            text=xiekuan,
+            text=f"鞋宽\n{xiekuan}",
             align="left",
             # anchor="ma",
             spacing=5,
@@ -310,7 +348,7 @@ class DetailPicGet(DetailBase):
         pp_bg.get_text_image_advanced(
             value=(621, 650),
             font=font_hei,
-            text=banggao,
+            text=f"帮高\n{banggao}",
             align="left",
             # anchor="ma",
             spacing=5,
@@ -321,7 +359,7 @@ class DetailPicGet(DetailBase):
         pp_bg.get_text_image_advanced(
             value=(621, 752),
             font=font_hei,
-            text=gengao,
+            text=f"跟高\n{gengao}",
             align="left",
             # anchor="ma",
             spacing=5,
@@ -335,26 +373,28 @@ class DetailPicGet(DetailBase):
     def deal_pic_8(self):
         detailed_images = []
         pp_bg = PictureProcessing(r"{}\7.jpg".format(self.root))
+        pp_bg_circle = PictureProcessing(r"{}\bg_circle.png".format(self.root))
         # detailed_images.append(pp_bg)
         goods_art_no_list = list(self.data.keys())
         all_color_name = []
-        bg_color = (253, 250, 242)
+        bg_color = (254, 249, 245)
         text_color = (70, 48, 41)
         font = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 25)
         goods_art_images = []
         total_height = 0
         for index, goods_art_no in enumerate(goods_art_no_list):
-            pp_jpg = self.get_overlay_pic_from_dict(
+            pp_jpg,pp_png = self.image_one_pic(
                 goods_art_no=goods_art_no,
-                color_name="侧视",
-                bg_color=bg_color,
+                name="侧视",
+                return_orign=True,
             )
             if pp_jpg is None:
                 continue
-            pp_jpg = pp_jpg.resize(value=pp_bg.width/2.5)
+            pp_jpg = pp_jpg.resize(value=pp_bg.width / 2.5)
+            pp_png = pp_png.resize(value=pp_bg.width / 2.5)
             color_name = self.goods_no_value["货号资料"][index]["颜色名称"]
             all_color_name.append(color_name)
-            text_bg = PictureProcessing("RGB", (pp_jpg.width, 50), bg_color)
+            text_bg = PictureProcessing("RGBA", (pp_jpg.width, 50), (255,255,255,0))
             text_bg = text_bg.get_text_image_advanced(
                 value=(0, 0),
                 font=font,
@@ -371,11 +411,13 @@ class DetailPicGet(DetailBase):
                 (pp_bg.width / 2, pp_jpg.height+200),
                 bg_color,
             )
+            pp_bg_circle = pp_bg_circle.resize(value=_bg.width/2)
+            _bg.paste_img(top_img=pp_bg_circle, base="center")
             if (index+1) == 1:
                 total_height += _bg.height
             if (index + 1) % 2 != 0 and (index + 1) != 1:
                 total_height += _bg.height
-            _bg = _bg.paste_img(top_img=pp_jpg, base="center")
+            _bg = _bg.to_overlay_pic_advance(top_img=pp_jpg,top_png_img=pp_png, base="center")
             _bg = _bg.paste_img(
                 top_img=text_bg, value=(pp_jpg.width / 2, pp_jpg.height+100)
             )
@@ -406,17 +448,9 @@ class DetailPicGet(DetailBase):
     # 角度展示
     def deal_pic_10(self):
         detailed_images = []
-        # 角度展示标题
-        detailed_images.append(PictureProcessing(r"{}\10.jpg".format(self.root)))
-        return self.pp_pic_subsection(
-            PictureProcessing(im=self.add_pic(detailed_images))
-        )
-
-    # 添加注意事项
-    def deal_pic_11(self):
-        detailed_images = []
-        image_path = r"{}\11.jpg".format(self.root)
-        pp_bg = PictureProcessing(image_path)
+        image_path = r"{}\10.jpg".format(self.root)
+        pp_bg = PictureProcessing(image_path,1600)
+        pp_arrow = PictureProcessing(r"{}\arrow.png".format(self.root))
         goods_art_no_list = list(self.data.keys())
         pp_jpg_1, pp_png_1 = self.image_one_pic(
             return_orign=True,
@@ -425,6 +459,14 @@ class DetailPicGet(DetailBase):
         )
         pp_jpg_1 = pp_jpg_1.resize(value=1400)
         pp_png_1 = pp_png_1.resize(value=1400)
+        bg_circl = PictureProcessing("RGB", (300, 300), (239, 208, 177))
+        bg_circl_paste = PictureProcessing("RGB", (290, 290), (239, 208, 177))
+        bg_circl_paste.paste_img(top_img=pp_jpg_1, base="center")
+        bg_circl_paste = bg_circl_paste.radius(value=145, circular_pos=(1, 1, 1, 1))
+        bg_circl = bg_circl.radius(value=150, circular_pos=(1, 1, 1, 1))
+        bg_circl = bg_circl.paste_img(top_img=bg_circl_paste, base="center")
+        bg_circl = bg_circl.paste_img(top_img=pp_arrow, base="nc")
+        pp_bg = pp_bg.paste_img(top_img=bg_circl, base="nw", value=(63, 493))
         pp_bg = pp_bg.to_overlay_pic_advance(
             mode="pixel",
             top_img=pp_jpg_1,
@@ -438,7 +480,7 @@ class DetailPicGet(DetailBase):
         mainTitle = self.get_text_value("细节亮点主标题")
         subTitle = self.get_text_value("细节亮点副标题")
         pp_bg.get_text_image_advanced(
-            value=(pp_bg.width/2, 219),
+            value=(pp_bg.width / 2, 219),
             font=font_main,
             text=mainTitle,
             align="center",
@@ -461,140 +503,147 @@ class DetailPicGet(DetailBase):
             margins=(0, 0, 0, 0),
         )
         detailed_images.append(pp_bg)
-        bg_12_image_path = r"{}\12.jpg".format(self.root)
-        bg_12 = PictureProcessing(bg_12_image_path)
-        detailed_images.append(bg_12)
         return self.pp_pic_subsection(
             PictureProcessing(im=self.add_pic(detailed_images))
         )
 
-    def deal_pic_13(self):
+    # 添加注意事项
+    def deal_pic_11(self):
+        """
+        bg_12_image_path = r"{}\12.jpg".format(self.root)
+        bg_12 = PictureProcessing(bg_12_image_path)
+        detailed_images.append(bg_12)
+        """
         detailed_images = []
-        image_path = r"{}\13.jpg".format(self.root)
-        pp_bg = PictureProcessing(image_path)
-        image_path_1 = r"{}\13_1.png".format(self.root)
-        pp_bg_1 = PictureProcessing(image_path_1)
+        image_path = r"{}\11.png".format(self.root)
+        pp_bg = PictureProcessing(image_path, 1600)
+        pp_bg_backend = PictureProcessing(
+            "RGB", (pp_bg.width, pp_bg.height), (245, 235, 226)
+        )
+        goods_art_no_list = list(self.data.keys())
+        pp_jpg_1, pp_png_1 = self.image_one_pic(
+            return_orign=True,
+            goods_art_no=goods_art_no_list[0],
+            name="俯视",
+        )
+        pp_jpg_1 = pp_jpg_1.resize(value=2000)
+        pp_png_1 = pp_png_1.resize(value=2000)
+        pp_bg_backend = pp_bg_backend.to_overlay_pic_advance(
+            mode="pixel",
+            top_img=pp_jpg_1,
+            base="cs",
+            value=(0, -50),
+            top_png_img=pp_png_1,
+        )
         font_main = ImageFont.truetype(
             r"resources\ttf\puhui\Medium.ttf", 58
         )  # 设计理念
-        pp_bg.get_text_image_advanced(
-            value=(pp_bg.width / 2, 168),
+        pp_bg_backend.get_text_image_advanced(
+            value=(pp_bg.width / 2, 219),
             font=font_main,
-            text="经典系带",
+            text="经   带",
             align="center",
             anchor="ma",
             spacing=5,
-            fill=(60, 40, 29),
+            fill=(107, 70, 61),
             return_mode="image",
             margins=(0, 0, 0, 0),
         )
         font_sub = ImageFont.truetype(r"resources\ttf\puhui\Light.ttf", 36)  # 设计理念
-        pp_bg.get_text_image_advanced(
-            value=(pp_bg.width / 2, 261),
+        pp_bg_backend.get_text_image_advanced(
+            value=(pp_bg.width / 2, 313),
             font=font_sub,
-            text="松紧自由调节",
+            text="松     节",
             align="center",
             anchor="ma",
             spacing=5,
-            fill=(60, 40, 29),
+            fill=(107, 70, 61),
             return_mode="image",
             margins=(0, 0, 0, 0),
         )
-        goods_art_no_list = list(self.data.keys())
-        pp_jpg_1, pp_png_1 = self.image_one_pic(
-            return_orign=True,
-            goods_art_no=goods_art_no_list[0],
-            name="俯视",
-        )
-        pp_jpg_1 = pp_jpg_1.resize(value=1500)
-        pp_png_1 = pp_png_1.resize(value=1500)
-        pp_bg = pp_bg.to_overlay_pic_advance(
-            mode="pixel",
-            top_img=pp_jpg_1,
-            base="cs",
-            value=(0, - pp_jpg_1.height/4),
-            top_png_img=pp_png_1,
-        )
-        pp_bg.paste_img(top_img=pp_bg_1)
-        detailed_images.append(pp_bg)
+        pp_bg_backend.paste_img(top_img=pp_bg,base="center")
+        detailed_images.append(pp_bg_backend)
+        # bg_12_image_path = r"{}\12.jpg".format(self.root)
+        # bg_12 = PictureProcessing(bg_12_image_path)
+        # detailed_images.append(bg_12)
         return self.pp_pic_subsection(
             PictureProcessing(im=self.add_pic(detailed_images))
         )
 
-    def deal_pic_14(self):
-        # 场景展示
+    def deal_pic_13(self):
         detailed_images = []
-        image_path = r"{}\14.jpg".format(self.root)
-        pp_bg_14 = PictureProcessing(image_path)
-        goods_art_no_list = list(self.data.keys())
-        # print("执行14")
-        pp_jpg_1, pp_png_1 = self.image_one_pic(
-            return_orign=True,
-            goods_art_no=goods_art_no_list[0],
-            name="组合",
-        )
-        if pp_jpg_1:
-            pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_14.width)
-            pp_png_1 = pp_png_1.resize(value=pp_bg_14.width)
-            pp_bg_14 = pp_bg_14.to_overlay_pic_advance(
-                mode="pixel",
-                top_img=pp_jpg_1,
-                base="cc",
-                value=(0, 0),
-                top_png_img=pp_png_1,
+        image_path = r"{}\12.jpg".format(self.root)
+        pp_bg = PictureProcessing(image_path,1600)
+        detailed_images.append(pp_bg)
+        radius_top = PictureProcessing(
+            "RGB", (pp_bg.width * 0.75, 40), (255, 255, 255)
+        ).radius(value=30, circular_pos=(1, 1, 0, 0))
+        radius_top_bg = PictureProcessing("RGB", (pp_bg.width, 40), (253, 246, 237))
+        image_list = ["俯视","侧视","后跟"]
+        for item in image_list:
+            pp_bg_background = PictureProcessing(
+                "RGB", (pp_bg.width, 800), (253, 246, 237)
             )
-        detailed_images.append(pp_bg_14)
-        return self.pp_pic_subsection(
-            PictureProcessing(im=self.add_pic(detailed_images))
-        )
-
-    def deal_pic_15(self):
-        detailed_images = []
-        image_path = r"{}\15.jpg".format(self.root)
-        pp_bg_15 = PictureProcessing(image_path)
-        goods_art_no_list = list(self.data.keys())
-        pp_jpg_1, pp_png_1 = self.image_one_pic(
-            return_orign=True,
-            goods_art_no=goods_art_no_list[0],
-            name="组合2",
-        )
-        if pp_jpg_1:
-            pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_15.width)
-            pp_png_1 = pp_png_1.resize(value=pp_bg_15.width)
-            pp_bg_15 = pp_bg_15.to_overlay_pic_advance(
-                mode="pixel",
-                top_img=pp_jpg_1,
-                base="cc",
-                value=(0, 0),
-                top_png_img=pp_png_1,
+            pp_bg_radius = PictureProcessing(
+                "RGB", (pp_bg.width * 0.85, 800), (255, 255, 255)
             )
-        detailed_images.append(pp_bg_15)
-        return self.pp_pic_subsection(
-            PictureProcessing(im=self.add_pic(detailed_images))
-        )
-
-    def deal_pic_16(self):
-        detailed_images = []
-        image_path = r"{}\16.jpg".format(self.root)
-        pp_bg_16 = PictureProcessing(image_path)
-        goods_art_no_list = list(self.data.keys())
-        print("执行16")
-        pp_jpg_1, pp_png_1 = self.image_one_pic(
-            return_orign=True,
-            goods_art_no=goods_art_no_list[0],
-            name="组合3",
-        )
-        if pp_jpg_1:
-            pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_16.width)
-            pp_png_1 = pp_png_1.resize(value=pp_bg_16.width)
-            pp_bg_16 = pp_bg_16.to_overlay_pic_advance(
-                mode="pixel",
-                top_img=pp_jpg_1,
-                base="cc",
-                value=(0, 0),
-                top_png_img=pp_png_1,
+            radius_top_bg = radius_top_bg.paste_img(top_img=radius_top, base="cc")
+            detailed_images.append(radius_top_bg)
+            goods_art_no_list = list(self.data.keys())
+            pp_jpg_1, pp_png_1 = self.image_one_pic(
+                return_orign=True,
+                goods_art_no=goods_art_no_list[0],
+                name=item,
+            )
+            if item =="俯视":
+                if self.check_shoe_is_right_by_pixel(im=pp_png_1.im):
+                    pp_jpg_1 = pp_jpg_1.transpose()
+                    pp_png_1 = pp_png_1.transpose()
+                pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_radius.width / 1.3)
+                pp_png_1 = pp_png_1.resize(value=pp_bg_radius.width / 1.3)
+                pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
+                    top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(-50, 0)
+                )
+                pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
+                    top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(50, 60)
+                )
+            if item == "侧视":
+                if self.check_shoe_is_right_by_pixel(im=pp_png_1.im):
+                    pp_jpg_1 = pp_jpg_1.transpose()
+                    pp_png_1 = pp_png_1.transpose()
+                pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_radius.width / 1.3)
+                pp_png_1 = pp_png_1.resize(value=pp_bg_radius.width / 1.3)
+                pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
+                    top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(60, 0)
+                )
+                pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
+                    top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(-60, 0)
+                )
+            if item == "后跟":
+                pp_jpg_1 = pp_jpg_1.resize(value=pp_bg_radius.width / 2.3)
+                pp_png_1 = pp_png_1.resize(value=pp_bg_radius.width / 2.3)
+                pp_jpg_1 = pp_jpg_1.transpose()
+                pp_png_1 = pp_png_1.transpose()
+                pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
+                    top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(130, 0)
+                )
+                pp_jpg_1 = pp_jpg_1.transpose()
+                pp_png_1 = pp_png_1.transpose()
+                pp_bg_radius = pp_bg_radius.to_overlay_pic_advance(
+                    top_img=pp_jpg_1, top_png_img=pp_png_1, base="cc", value=(-130, 0)
+                )
+            pp_bg_radius = pp_bg_radius.radius(value=30, circular_pos=(1, 1, 1, 1))
+            pp_bg_background.paste_img(top_img=pp_bg_radius, base="cc", value=(0, 0))
+            detailed_images.append(pp_bg_background)
+            radius_bottom = PictureProcessing(
+                "RGB", (pp_bg.width * 0.75, 40), (255, 255, 255)
+            ).radius(value=30, circular_pos=(0, 0, 1, 1))
+            radius_bottom_bg = PictureProcessing("RGB", (pp_bg.width, 40), (253, 246, 237))
+            radius_bottom_bg = radius_bottom_bg.paste_img(top_img=radius_bottom, base="cc")
+            detailed_images.append(radius_bottom_bg)
+            detailed_images.append(
+                PictureProcessing("RGB", (pp_bg.width, 50), (253, 246, 237))
             )
-        detailed_images.append(pp_bg_16)
         return self.pp_pic_subsection(
             PictureProcessing(im=self.add_pic(detailed_images))
         )
@@ -776,13 +825,130 @@ class DetailPicGet(DetailBase):
 
     def deal_pic_20(self):
         detailed_images = []
-        bg_20 = PictureProcessing(r"{}\20.jpg".format(self.root))
+        font = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 30)  # 设计理念
+        pp_bg = PictureProcessing(r"{}\20.jpg".format(self.root))
+        detailed_images.append(pp_bg)
+        goods_art_no_list = list(self.data.keys())
+        for item in goods_art_no_list:
+            radius_top_bg = PictureProcessing(
+                "RGB", (pp_bg.width, 1048), (253, 246, 237)
+            )
+            bg_radius = PictureProcessing(
+                "RGB",
+                (pp_bg.width * 0.85, radius_top_bg.height * 0.85),
+                (255, 255, 255),
+            )
+            pp_jpg_1, pp_png_1 = self.image_one_pic(
+                return_orign=True,
+                goods_art_no=item,
+                name="俯视",
+            )
+            pp_jpg_1 = pp_jpg_1.resize(value=bg_radius.width/1.3)
+            pp_png_1 = pp_png_1.resize(value=bg_radius.width  /1.3)
+            bg_radius = bg_radius.to_overlay_pic_advance(
+                top_img=pp_jpg_1, top_png_img=pp_png_1, base="nc",value=(0,150)
+            )
+            bg_radius = bg_radius.radius(value=30)
+            text_bg = PictureProcessing(
+                "RGBA", (pp_jpg_1.width, 50), (255, 255, 255, 0)
+            )
+            text_bg = text_bg.get_text_image_advanced(
+                value=(0, 0),
+                font=font,
+                text="斜面展示",
+                align="center",
+                # anchor="mm",
+                spacing=5,
+                fill=(70, 45, 36),
+                return_mode="min_image",
+                margins=(0, 0, 0, 0),
+            )
+            _bg = PictureProcessing(
+                "RGBA",
+                (pp_bg.width / 2, pp_png_1.height + 200),
+                (255, 255, 255,0),
+            )
+            _bg.paste_img(top_img=text_bg, base="center")
+            bg_radius.paste_img(top_img=_bg, base="center")
+            radius_top_bg = radius_top_bg.paste_img(top_img=bg_radius, base="center")
+            pp_jpg_1, pp_png_1 = self.image_one_pic(
+                return_orign=True,
+                goods_art_no=item,
+                name="内里",
+            )
+            pp_jpg_1 = pp_jpg_1.resize(value=bg_radius.width / 2)
+            pp_png_1 = pp_png_1.resize(value=bg_radius.width / 2)
+            bg_radius = bg_radius.to_overlay_pic_advance(
+                top_img=pp_jpg_1, top_png_img=pp_png_1, base="sw", value=(0, 150)
+            )
+            bg_radius = bg_radius.radius(value=30)
+            text_bg = PictureProcessing(
+                "RGBA", (pp_jpg_1.width, 50), (255, 255, 255, 0)
+            )
+            text_bg = text_bg.get_text_image_advanced(
+                value=(0, 0),
+                font=font,
+                text="鞋面展示",
+                align="center",
+                # anchor="mm",
+                spacing=5,
+                fill=(70, 45, 36),
+                return_mode="min_image",
+                margins=(0, 0, 0, 0),
+            )
+            _bg = PictureProcessing(
+                "RGBA",
+                (pp_bg.width / 2, pp_png_1.height + 150),
+                (255, 255, 255, 0),
+            )
+            _bg.paste_img(top_img=text_bg, base="center")
+            bg_radius.paste_img(top_img=_bg, base="sw",value=(-50,-20))
+            radius_top_bg = radius_top_bg.paste_img(top_img=bg_radius, base="center")
+            pp_jpg_1, pp_png_1 = self.image_one_pic(
+                return_orign=True,
+                goods_art_no=item,
+                name="鞋底",
+            )
+            pp_jpg_1 = pp_jpg_1.resize(value=bg_radius.width / 2)
+            pp_png_1 = pp_png_1.resize(value=bg_radius.width / 2)
+            bg_radius = bg_radius.to_overlay_pic_advance(
+                top_img=pp_jpg_1, top_png_img=pp_png_1, base="es", value=(0, 150)
+            )
+            bg_radius = bg_radius.radius(value=30)
+            text_bg = PictureProcessing(
+                "RGBA", (pp_jpg_1.width, 50), (255, 255, 255, 0)
+            )
+            text_bg = text_bg.get_text_image_advanced(
+                value=(0, 0),
+                font=font,
+                text="鞋面展示",
+                align="center",
+                # anchor="mm",
+                spacing=5,
+                fill=(70, 45, 36),
+                return_mode="min_image",
+                margins=(0, 0, 0, 0),
+            )
+            _bg = PictureProcessing(
+                "RGBA",
+                (pp_bg.width / 2, pp_png_1.height + 150),
+                (255, 255, 255, 0),
+            )
+            _bg.paste_img(top_img=text_bg, base="center")
+            bg_radius.paste_img(top_img=_bg, base="es", value=(-50, -20))
+            radius_top_bg = radius_top_bg.paste_img(top_img=bg_radius, base="center")
+            detailed_images.append(radius_top_bg)
+        return self.pp_pic_subsection(
+            PictureProcessing(im=self.add_pic(detailed_images))
+        )
+
+    def deal_pic_21(self):
+        detailed_images = []
         bg_21 = PictureProcessing(r"{}\21.jpg".format(self.root))
-        bg_22 = PictureProcessing(r"{}\22.jpg".format(self.root))
-        detailed_images.append(bg_20)
         detailed_images.append(bg_21)
-        detailed_images.append(bg_22)
-        return self.pp_pic_subsection(PictureProcessing(im=self.add_pic(detailed_images)))
+        return self.pp_pic_subsection(
+            PictureProcessing(im=self.add_pic(detailed_images))
+        )
 
 
 if __name__ == "__main__":

+ 28 - 0
python/custom_plugins/plugins_mode/detail_generate_base.py

@@ -50,6 +50,34 @@ class DetailBase(object):
                 if k not in ig_keys:
                     self.goods_no_value[k] = v
 
+    def check_shoe_is_right_by_pixel(self, im=None, image_path=None):
+        if im is None:
+            im = Image.open(image_path)
+        # 注意,只支持透明图
+        # 打开图像文件
+        im = im.crop(im.getbbox())
+        # image.show()
+        # 获取图像第一行的像素数据
+        pixel_data = im.load()
+        pix_list = []
+        h = int(im.height / 20)
+        for i in range(im.width):
+            _r, _g, _b, _a = pixel_data[i, h]
+            if _a > 10:
+                pix_list.append(i)
+
+        left_f_num = 0
+        middle_w = int(im.width / 2)
+        for i in pix_list:
+            if i < middle_w:
+                left_f_num += 1
+            else:
+                left_f_num -= 1
+        if left_f_num > 0:
+            return True
+        else:
+            return False
+
     def del_detail_folder(self):
         out_path = "{out_put_dir}/{goods_no}".format(out_put_dir=self.out_put_dir, goods_no=self.goods_no)
         if not os.path.exists(out_path):

+ 3 - 3
python/detail_template_test.py

@@ -4,17 +4,17 @@ import settings
 settings.is_test_plugins = True
 
 
-from custom_plugins.plugins.detail_template.zhudi.detail_zhudi1 import (
+from custom_plugins.plugins.detail_template.xinnuo.detail_xinnuo1 import (
     DetailPicGet,
 )
 
 
-data = json.load(open("detail_template_test.json", mode="r", encoding="utf-8"))
+data = json.load(open("detail_template_test_xinnuo.json", mode="r", encoding="utf-8"))
 for goods_no, value in data.items():
     d = DetailPicGet(
         goods_no=goods_no,
         goods_no_value=value,
-        out_put_dir=r"C:\Development\project\python\CameraMachine\python\output\zhudi-1",
+        out_put_dir=r"C:\Development\project\python\CameraMachine\python\output\xinnuo-1",
         test=True,
     )
 print("生成成功")

+ 4 - 6
python/detail_template_test_xinnuo.json

@@ -18,12 +18,10 @@
                     "鞋底-阴影": "C:/Users/15001/Desktop/测试文件夹/AC51209131/阴影图处理/AC51209131(4)_鞋底_阴影.png",
                     "内里-抠图": "C:/Users/15001/Desktop/测试文件夹/AC51209131/阴影图处理/AC51209131(5)_内里_抠图.png",
                     "内里-阴影": "C:/Users/15001/Desktop/测试文件夹/AC51209131/阴影图处理/AC51209131(5)_内里_阴影.png",
-                    "组合-抠图": "C:/Users/15001/Desktop/测试文件夹/测试/ST001-2/阴影图处理/ST001-2(6)_组合_抠图.png",
-                    "组合-阴影": "C:/Users/15001/Desktop/测试文件夹/测试/ST001-2/阴影图处理/ST001-2(6)_组合_阴影.png",
-                    "组合2-抠图": "C:/Users/15001/Desktop/测试文件夹/测试/ST003-1/阴影图处理/ST003-1(7)_组合2_抠图.png",
-                    "组合2-阴影": "C:/Users/15001/Desktop/测试文件夹/测试/ST003-1/阴影图处理/ST003-1(7)_组合2_阴影.png",
-                    "组合3-抠图": "C:/Users/15001/Desktop/测试文件夹/测试/ST003-1/阴影图处理/ST003-1(8)_组合3_抠图.png",
-                    "组合3-阴影": "C:/Users/15001/Desktop/测试文件夹/测试/ST003-1/阴影图处理/ST003-1(8)_组合3_阴影.png"
+                    "组合-抠图": "C:/Users/15001/Desktop/测试文件夹/AC51209131/阴影图处理/ST003-1(7)_组合_抠图.png",
+                    "组合-阴影": "C:/Users/15001/Desktop/测试文件夹/AC51209131/阴影图处理/ST003-1(7)_组合_阴影.png",
+                    "组合2-抠图": "C:/Users/15001/Desktop/测试文件夹/AC51209131/阴影图处理/ST003-1(7)_组合_抠图.png",
+                    "组合2-阴影": "C:/Users/15001/Desktop/测试文件夹/AC51209131/阴影图处理/ST003-1(7)_组合_阴影.png"
                 },
                 "800x800": [
                     "C:/Users/15001/Desktop/测试文件夹/AC51016112/800x800/AC51016112(1).jpg",