Parcourir la source

广州客户模板

rambo il y a 6 mois
Parent
commit
ffb1651419

+ 0 - 0
python/custom_plugins/plugins/detail_template/xinjunlue/__init__.py


+ 216 - 0
python/custom_plugins/plugins/detail_template/xinjunlue/detail_xinjunlue1.py

@@ -0,0 +1,216 @@
+"""
+步骤:
+1、整理需要处理的款号图-输出款号图文件夹
+2、整理所有相关的图片作为素材图
+3、按要求进行拼接
+"""
+
+import os
+from PIL import ImageFont, ImageDraw
+import sys
+import settings
+
+# from PIL import Image, ImageDraw, 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
+is_test_plugins = False
+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
+
+plugins_name = "详情模板"
+company_name_list = ["全部"]
+template_name = "xinjunlue-1"
+
+
+# 乐福鞋 详情页
+
+
+class DetailPicGet(DetailBase):
+    need_view = ["俯视", "侧视", "后跟", "鞋底", "内里"]
+    root = r"{}\resources\detail_temp\zhudi\1".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,
+        output_queue=None,
+        **kwargs
+    ):
+
+        super().__init__(
+            goods_no,
+            goods_no_value,
+            out_put_dir,
+            windows=windows,
+            excel_data=excel_data,
+            assigned_page_list=assigned_page_list,
+            output_queue=output_queue,
+        )
+
+        self.template_name = template_name
+        self.root = r"{}\resources\detail_temp\zhudi\1".format(os.getcwd())
+        print(f"run {template_name} ")
+        self.base_bg_color = (255, 255, 255)
+        self.deal_pic_func_list = [
+            self.deal_pic_1,
+        ]
+        if test:
+            self.run_test()
+        else:
+            self.run_all()
+
+    def run_test(self):
+        detailed_images = []
+        detailed_images.append(self.deal_pic_1())
+        img = self.add_pic(detailed_images)
+        if img:
+            self.create_folder(r"{}/{}".format(self.out_put_dir, template_name))
+            # print("保存图片成功", img.show())
+            img.save(
+                r"{}/{}/{}.jpg".format(
+                    self.out_put_dir, template_name, self.goods_no, format="JPEG"
+                )
+            )
+            img.show()
+
+    #
+    def deal_pic_1(self):
+        detailed_images = []
+        base_bg_width = 1200
+        base_limit_width = base_bg_width / 2
+        font = ImageFont.truetype("msyh.ttc", 20)
+        dataList = ["款号", "面料", "内里", "垫脚", "大底", "饰扣", "客户", "日期"]
+        height_total = 0
+        text_list = []
+        line_space = 15
+        for idx, item in enumerate(dataList):
+            info = self.get_text_value(item)
+            if info == None or info == "":
+                continue
+            _pp = PictureProcessing()
+            text = f"{item}: {self.get_text_value(item)}"
+            duanluo = ""
+            sum_width = 0
+            line_count = 0
+            for char in text:
+                text_width = font.getlength(char)
+                sum_width += text_width
+                if sum_width > base_limit_width:  # 超过预设宽度就修改段落 以及当前行数
+                    line_count += 1
+                    sum_width = 0
+                    duanluo += '\n'
+                duanluo += char
+            _pp = _pp.get_text_image_advanced(
+                font=font,
+                text=duanluo,
+                spacing=10,
+                fill=(0, 0, 0),
+                return_mode="min_image_high",
+            )
+            height_total += _pp.height + line_space
+            text_list.append(_pp)
+        pp_bg_jpg = PictureProcessing(
+            "RGB", (base_bg_width, height_total), (255, 255, 255)
+        )
+        goods_art_no_list = list(self.data.keys())
+        current_y = 0
+        for index, text_item in enumerate(text_list):
+            pp_bg_jpg = pp_bg_jpg.paste_img(top_img=text_item, value=(10, current_y))
+            # 更新 Y 坐标为当前项的底部位置
+            current_y += text_item.height + line_space
+        pp_jpg, pp_png = self.image_one_pic(
+            return_orign=True,
+            goods_art_no=goods_art_no_list[0],
+            name="俯视",
+        )
+        pp_png = pp_png.resize(value=base_limit_width)
+        background_size = 0
+        if pp_png.height > pp_bg_jpg.height:
+            background_size = pp_png.height+100
+        else:
+            background_size = pp_bg_jpg.height + 100
+        pp_image_jpg = PictureProcessing(
+            "RGB", (base_bg_width, background_size), (255, 255, 255)
+        )
+        pp_image_jpg.paste_img(top_img=pp_bg_jpg, base="wc", value=(0, 0))
+        pp_image_jpg.paste_img(top_img=pp_png, base="ec", value=(0, 0))
+        detailed_images.append(pp_image_jpg)
+        return PictureProcessing(im=self.add_pic(detailed_images))
+
+    def deal_pic_1(self):
+        detailed_images = []
+        base_bg_width = 1200
+        base_limit_width = base_bg_width / 2
+        font = ImageFont.truetype("msyh.ttc", 20)
+        dataList = ["款号", "面料", "内里", "垫脚", "大底", "饰扣", "客户", "日期"]
+        height_total = 0
+        text_list = []
+        line_space = 15
+        for idx, item in enumerate(dataList):
+            info = self.get_text_value(item)
+            if info == None or info == "":
+                continue
+            _pp = PictureProcessing()
+            text = f"{item}: {self.get_text_value(item)}"
+            duanluo = ""
+            sum_width = 0
+            line_count = 0
+            for char in text:
+                text_width = font.getlength(char)
+                sum_width += text_width
+                if sum_width > base_limit_width:  # 超过预设宽度就修改段落 以及当前行数
+                    line_count += 1
+                    sum_width = 0
+                    duanluo += "\n"
+                duanluo += char
+            _pp = _pp.get_text_image_advanced(
+                font=font,
+                text=duanluo,
+                spacing=10,
+                fill=(0, 0, 0),
+                return_mode="min_image_high",
+            )
+            height_total += _pp.height + line_space
+            text_list.append(_pp)
+        pp_bg_jpg = PictureProcessing(
+            "RGB", (base_bg_width, height_total), (255, 255, 255)
+        )
+        goods_art_no_list = list(self.data.keys())
+        current_y = 0
+        for index, text_item in enumerate(text_list):
+            pp_bg_jpg = pp_bg_jpg.paste_img(top_img=text_item, value=(20, current_y))
+            # 更新 Y 坐标为当前项的底部位置
+            current_y += text_item.height + line_space
+        pp_jpg, pp_png = self.image_one_pic(
+            return_orign=True,
+            goods_art_no=goods_art_no_list[0],
+            name="俯视",
+        )
+        pp_png = pp_png.resize(value=base_limit_width)
+        background_size = 0
+        if pp_png.height > pp_bg_jpg.height:
+            background_size = pp_png.height + 100
+        else:
+            background_size = pp_bg_jpg.height + 100
+        pp_image_jpg = PictureProcessing(
+            "RGB", (base_bg_width, background_size), (255, 255, 255)
+        )
+        pp_image_jpg.paste_img(top_img=pp_bg_jpg, base="wc", value=(0, 0))
+        pp_image_jpg.paste_img(top_img=pp_png, base="ec", value=(0, 0))
+        detailed_images.append(pp_image_jpg)
+        return PictureProcessing(im=self.add_pic(detailed_images))

+ 4 - 4
python/detail_template_test.py

@@ -4,17 +4,17 @@ import settings
 settings.is_test_plugins = True
 
 
-from custom_plugins.plugins.detail_template.huilima.detail_huilima6 import (
+from custom_plugins.plugins.detail_template.xinjunlue.detail_xinjunlue1 import (
     DetailPicGet,
 )
 
 
-data = json.load(open("detail_template_test_xinnuo.json", mode="r", encoding="utf-8"))
+data = json.load(open("detail_template_test_xinjunlue.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\huilima-6",
+        out_put_dir=r"C:\Development\project\python\CameraMachine\python\output\xinjunlue-1",
         test=True,
     )
-print("生成成功")
+print("生成成功")

+ 74 - 0
python/detail_template_test_xinjunlue.json

@@ -0,0 +1,74 @@
+{
+    "AC5120913": {
+        "款号": "E305-01003",
+        "货号资料": [
+            {
+                "货号": "AC51016112",
+                "文件夹名称": "AC51016112",
+                "编号": "AC51016112",
+                "颜色名称": "枪色",
+                "pics": {
+                    "俯视-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(1)_俯视_抠图.png",
+                    "俯视-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(1)_俯视_阴影.png",
+                    "侧视-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(2)_侧视_抠图.png",
+                    "侧视-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(2)_侧视_阴影.png",
+                    "后跟-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(3)_后跟_抠图.png",
+                    "后跟-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(3)_后跟_阴影.png",
+                    "鞋底-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(4)_鞋底_抠图.png",
+                    "鞋底-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(4)_鞋底_阴影.png",
+                    "内里-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(5)_内里_抠图.png",
+                    "内里-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(5)_内里_阴影.png",
+                    "组合-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(6)_组合_抠图.png",
+                    "组合-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(6)_组合_阴影.png",
+                    "组合2-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(7)_组合2_抠图.png",
+                    "组合2-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(7)_组合2_阴影.png",
+                    "组合3-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(8)_组合3_抠图.png",
+                    "组合3-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(8)_组合3_阴影.png"
+                },
+                "800x800": [
+                    "C:/Users/15001/Desktop/测试文件夹/AC51016112/800x800/AC51016112(1).jpg",
+                    "C:/Users/15001/Desktop/测试文件夹/AC51016112/800x800/AC51016112(2).jpg",
+                    "C:/Users/15001/Desktop/测试文件夹/AC51016112/800x800/AC51016112(3).jpg",
+                    "C:/Users/15001/Desktop/测试文件夹/AC51016112/800x800/AC51016112(4).jpg",
+                    "C:/Users/15001/Desktop/测试文件夹/AC51016112/800x800/AC51016112(5).jpg"
+                ]
+            },
+            {
+                "货号": "AC51209131",
+                "文件夹名称": "AC51209131",
+                "编号": "AC51209131",
+                "颜色名称": "白色",
+                "pics": {
+                    "俯视-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(1)_俯视_抠图.png",
+                    "俯视-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(1)_俯视_阴影.png",
+                    "侧视-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(2)_侧视_抠图.png",
+                    "侧视-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(2)_侧视_阴影.png",
+                    "后跟-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(3)_后跟_抠图.png",
+                    "后跟-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(3)_后跟_阴影.png",
+                    "鞋底-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(4)_鞋底_抠图.png",
+                    "鞋底-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(4)_鞋底_阴影.png",
+                    "内里-抠图": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(5)_内里_抠图.png",
+                    "内里-阴影": "C:/Users/15001/Desktop/2025-06-11/A333/阴影图处理/A333(5)_内里_阴影.png"
+                },
+                "800x800": [
+                    "C:/Users/15001/Desktop/测试文件夹/AC51209131/800x800/AC51209131(1).jpg",
+                    "C:/Users/15001/Desktop/测试文件夹/AC51209131/800x800/AC51209131(2).jpg",
+                    "C:/Users/15001/Desktop/测试文件夹/AC51209131/800x800/AC51209131(3).jpg",
+                    "C:/Users/15001/Desktop/测试文件夹/AC51209131/800x800/AC51209131(4).jpg",
+                    "C:/Users/15001/Desktop/测试文件夹/AC51209131/800x800/AC51209131(5).jpg"
+                ]
+            }
+        ],
+        "文件夹名称": "AC51016112",
+        "图片路径": "休闲运动",
+        "楦号": "E305S",
+        "内里": "RL203黑色羊皮里+后套里:ZP3002黑色猪皮反面",
+        "面料": "RB3721杏色网布+RJ262杏色长毛牛京+RN1982白色荔枝纹皮+RN2586黑色牛皮",
+        "垫脚": "RB569黑色双面超纤(成型垫脚)",
+        "大底": "黑色大底+灰色EVA+白色EVA",
+        "饰扣": "黑色松紧+金色日子扣",
+        "客户": "strategy",
+        "码数": "",
+        "日期": "2025-6-12"
+    }
+}