""" 步骤: 1、整理需要处理的款号图-输出款号图文件夹 2、整理所有相关的图片作为素材图 3、按要求进行拼接 """ import os from PIL import ImageFont import sys import settings # 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 = "huilima-4" # 乐福鞋 详情页 class DetailPicGet(DetailBase): need_view = ["俯视", "侧视", "后跟", "鞋底", "内里"] root = r"{}\resources\detail_temp\huilima\4".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\huilima\4".format(os.getcwd()) print("run huilima-1 ") self.base_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_3_2, self.deal_pic_3_3, self.deal_pic_4, self.deal_pic_5, self.deal_pic_6, ] 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()) detailed_images.append(self.deal_pic_6()) img = self.add_pic(detailed_images) if img: self.create_folder(r"{}/{}".format(self.out_put_dir, template_name)) 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 = [] pp_bg_1 = PictureProcessing(r"{}\1.jpg".format(self.root)) font_1 = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 120) text_list = [ { "text": "标题", "default": self.get_text_value("商品标题"), "pos": (89, 224), "max": 6, }, { "text": "副标题", "default": "百搭舒适,型走随心", "pos": (89, 345), "max": 0, }, ] for text_data in text_list: text = self.get_text_value(text_data["text"]) if not text: text = text_data["default"] if text_data["max"] > 0 and text: text = text[:text_data["max"]] if text: _pp = PictureProcessing().get_text_image_advanced( font=font_1, text=text, fill=(0, 0, 0), return_mode="min_image", ) pp_bg_1 = pp_bg_1.paste_img(top_img=_pp, value=text_data["pos"], base="nw") detailed_images.append(pp_bg_1) # 粘贴组合图 goods_art_no_list = list(self.data.keys()) pp_jpg, pp_png = self.image_one_pic(return_orign=True, goods_art_no=goods_art_no_list[0], name="组合", ) if not pp_jpg: pp_jpg, pp_png = self.image_one_pic(return_orign=True, goods_art_no=goods_art_no_list[0], name="俯视", ) pp_jpg: PictureProcessing pp_png: PictureProcessing pp_jpg = pp_jpg.resize(value=1405) pp_png = pp_png.resize(value=1405) pp_bg_2 = PictureProcessing(r"{}\2.jpg".format(self.root)) pp_bg_2 = pp_bg_2.to_overlay_pic_advance(top_img=pp_jpg, top_png_img=pp_png, base="cc") detailed_images.append(pp_bg_2) return PictureProcessing(im=self.add_pic(detailed_images)) # 展示基础信息 def deal_pic_2(self): detailed_images = [] detailed_images.append(PictureProcessing(r"{}\3.jpg".format(self.root))) # 粘贴侧视图 goods_art_no_list = list(self.data.keys()) pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no_list[0], color_name="侧视", bg_color=self.base_bg_color) pp_jpg = pp_jpg.resize(value=1098) pp_jpg = pp_jpg.paste_img_invert( top_img=PictureProcessing("RGB", (1600, pp_jpg.height + 100), self.base_bg_color), base="cc") detailed_images.append(pp_jpg) # 粘贴基础信息 pp_bg_2 = PictureProcessing(r"{}\5.jpg".format(self.root)) font_1 = ImageFont.truetype(r"resources\ttf\puhui\Regular.ttf", 30) text_list = [ { "text": "鞋面材质", "default": self.get_text_value("商品面料"), "pos": (767, 176), }, { "text": "内里材质", "default": self.get_text_value("商品内里"), "pos": (1213, 176), }, { "text": "鞋底材质", "default": self.get_text_value("商品鞋底"), "pos": (767, 345), }, { "text": "鞋垫材质", "default": self.get_text_value("鞋垫"), "pos": (1213, 345), }, {"text": "跟高", "default": "6CM", "pos": (767, 616)}, {"text": "前底厚度", "default": "3CM", "pos": (1196, 616)}, ] for text_data in text_list: text = self.get_text_value(text_data["text"]) if not text: text = text_data["default"] if text: _pp = PictureProcessing().get_text_image_advanced( font=font_1, text=text, fill=(0, 0, 0), return_mode="min_image", ) pp_bg_2 = pp_bg_2.paste_img(top_img=_pp, value=text_data["pos"], base="nw") detailed_images.append(pp_bg_2) return PictureProcessing(im=self.add_pic(detailed_images)) # 颜色展示 def deal_pic_3(self): detailed_images = [] font_1 = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 34) # 颜色名称 color_pic_list_1 = [] for goods_art_no_dict in self.goods_no_value["货号资料"]: color_name = goods_art_no_dict["颜色名称"] goods_art_no = goods_art_no_dict["货号"] pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no, color_name="侧视", bg_color=self.base_bg_color) pp_jpg = pp_jpg.resize(value=390) pp_jpg = pp_jpg.paste_img_invert( top_img=PictureProcessing("RGBA", (pp_jpg.width, pp_jpg.height + 70), (255, 255, 255, 0)), base="nw" ) text_image = PictureProcessing().get_text_image_advanced(font=font_1, text="{} / COLOR".format(color_name), fill=(0, 0, 0), return_mode="min_image") pp_jpg = pp_jpg.paste_img(top_img=text_image, base="sc", value=(0, 10)) color_pic_list_1.append(pp_jpg) # 颜色列表进行等分展示 all_color_pp = PictureProcessing().horizontal_distribution(color_pic_list_1, bg_width=1114, line_spacing=10, number_per_row=2) all_color_pp = all_color_pp.paste_img_invert( top_img=PictureProcessing("RGB", (1600, all_color_pp.height + 100), self.base_bg_color), base="cc", value=(0, 0)) detailed_images.append(all_color_pp) return PictureProcessing(im=self.add_pic(detailed_images)) # 模特图 def deal_pic_3_2(self): if self.get_text_value("模特图"): return self.concatAigcImage(self.get_text_value("模特图"),resize=1600) else: return # 场景图 def deal_pic_3_3(self): if self.get_text_value("场景图"): return self.concatAigcImage(self.get_text_value("场景图"),resize=1600) else: return # 展示细节图 def deal_pic_4(self): detailed_images = [] detailed_images.append(PictureProcessing(r"{}\8.jpg".format(self.root))) goods_art_no_list = list(self.data.keys()) goods_art_no = goods_art_no_list[0] font_1 = ImageFont.truetype(r"resources\ttf\puhui\Medium.ttf", 85) # 颜色名称 view_data_list = ["俯视", "俯视", "侧视"] text_list = ["提示1主标题", "提示2主标题", "提示3主标题"] bg_name_list = ["10.jpg", "12.jpg", "14.jpg"] for index, view_name in enumerate(view_data_list): pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no, color_name=view_name, bg_color=(246, 246, 246)) if index == 0: resize_value = 3200 paste_base = "cc" paste_value = (0, 200) if index == 1: resize_value = 3200 paste_base = "ne" paste_value = (-100, 0) if index == 2: pp_jpg = pp_jpg.transpose(mode="left_right") resize_value = 3513 paste_base = "sw" paste_value = (0, 100) pp_jpg = pp_jpg.resize(value=resize_value) pp_jpg = pp_jpg.paste_img_invert(top_img=PictureProcessing("RGB", (1500, 1500), (246, 246, 246)), base=paste_base, value=paste_value ) pp_jpg = pp_jpg.radius(value=100) pp_jpg = pp_jpg.paste_img_invert(top_img=PictureProcessing("RGB", (1600, 1600), (255, 255, 255)), base="cc" ) detailed_images.append(pp_jpg) # 添加文字 text = self.get_text_value(text_list[index]) if text: pp_text_bg = PictureProcessing(r"{}\{}".format(self.root, bg_name_list[index])) _pp = PictureProcessing().get_text_image_advanced( font=font_1, text=text, fill=(0, 0, 0), return_mode="min_image", ) pp_text_bg = pp_text_bg.paste_img(top_img=_pp, value=(73, 0), base="wc") detailed_images.append(pp_text_bg) return PictureProcessing(im=self.add_pic(detailed_images)) # 场景图--产品展示 def deal_pic_5(self): detailed_images = [] detailed_images.append(PictureProcessing(r"{}\15.jpg".format(self.root))) goods_art_no_list = list(self.data.keys()) goods_art_no = goods_art_no_list[0] _flag = True pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no, color_name="组合1", bg_color=(255, 255, 255)) if pp_jpg: pp_jpg = pp_jpg.paste_img_invert( top_img=PictureProcessing("RGB", (1600, pp_jpg.height + 200), (255, 255, 255)), base="cc", ) detailed_images.append(pp_jpg) else: _flag = False pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no, color_name="组合2", bg_color=(255, 255, 255)) if pp_jpg: pp_jpg = pp_jpg.paste_img_invert( top_img=PictureProcessing("RGB", (1600, pp_jpg.height + 200), (255, 255, 255)), base="cc", ) detailed_images.append(pp_jpg) else: _flag = False if not _flag: detailed_images = [] detailed_images.append(PictureProcessing(r"{}\15.jpg".format(self.root))) for goods_art_no_dict in self.goods_no_value["货号资料"]: color_name = goods_art_no_dict["颜色名称"] goods_art_no = goods_art_no_dict["货号"] pp_jpg = self.get_overlay_pic_from_dict(goods_art_no=goods_art_no, color_name="侧视", bg_color=self.base_bg_color) pp_jpg = pp_jpg.resize(value=1404) pp_jpg = pp_jpg.paste_img_invert( top_img=PictureProcessing("RGB", (1600, pp_jpg.height + 200), (255, 255, 255)), base="cc", ) detailed_images.append(pp_jpg) return PictureProcessing(im=self.add_pic(detailed_images)) # 添加注意事项 def deal_pic_6(self): detailed_images = [] detailed_images.append(PictureProcessing(r"{}\20.jpg".format(self.root))) detailed_images.append(PictureProcessing(r"{}\21.jpg".format(self.root))) return PictureProcessing(im=self.add_pic(detailed_images))