""" 步骤: 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 = "clothing-2" class A(object): def __init__(self): print("AAAAAAAAAAAAAAAA") class DetailPicGet(DetailBase): need_view = ["正面", "侧视", "背面", "背侧"] root = r"{}\resources\detail_temp\clothing\2".format(os.getcwd()) a = A() def __init__( self, goods_no, goods_no_value: dict, out_put_dir, windows=None, test=False, excel_data=None, assigned_page_list=None, **kwargs, ): super().__init__( goods_no, goods_no_value, out_put_dir, windows=windows, excel_data=excel_data, assigned_page_list=assigned_page_list, ) self.template_name = template_name self.root = r"{}\resources\detail_temp\clothing\2".format(os.getcwd()) print("run huilima-1 ") self.base_bg_color = (228, 196, 147) 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, self.deal_pic_6, ] bg_color = (246, 246, 246) self.image_init(bg_color) 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()) print("self.out_put_dir", self.out_put_dir) img = self.add_pic(detailed_images) img.save(r"{}/{}.jpg".format(self.out_put_dir, self.goods_no, format="JPEG")) if img: img.show() def deal_pic_1(self): bg_color = (246, 246, 246) """ 制作主图 """ detailed_images = [] pp_0 = PictureProcessing(r"{}\1.png".format(self.root)) bg_img = self.getSpecialImage(category="场景图", instead_category="正面",resize=pp_0.width) bg_img.paste_img(top_img=pp_0, base="nc", value=(0, 0)) detailed_images.append(bg_img) return PictureProcessing(im=self.add_pic(detailed_images)) def getSpecialImage(self, category="模特图", instead_category="正面", resize=1200): """获取特殊图片""" goods_art_no_list = list(self.data.keys()) if self.get_text_value(category): mote_img = PictureProcessing(self.get_text_value(category)) mote_img = mote_img.resize(value=resize) else: pp_jpg, pp_png = self.image_one_pic( return_orign=True, goods_art_no=goods_art_no_list[0], name=instead_category, ) mote_img = pp_jpg.resize(value=resize) bg_img = PictureProcessing( "RGB", (mote_img.width, mote_img.height), (255, 255, 255) ) bg_img = bg_img.paste_img(top_img=mote_img, base="nc", value=(0, 0)) return bg_img def deal_pic_2(self): detailed_images = [] # 尺码表 pp_1 = PictureProcessing(r"{}\2.jpg".format(self.root)) bg_img = self.getSpecialImage( category="模特图", instead_category="正面", resize=pp_1.width ) right_top_img = bg_img.resize(value=pp_1.width) detail_2_bg = PictureProcessing( "RGB", (pp_1.width / 2, pp_1.height-150), (255, 255, 255) ) detail_2_bg.paste_img(top_img=right_top_img, base="cc", value=(0, 0)) pp_1.paste_img(top_img=detail_2_bg, base="en", value=(30, 80)) bg_img2 = self.getSpecialImage( category="场景图", instead_category="背面", resize=pp_1.width ) left_bottom_img = bg_img2.resize(value=pp_1.width*1.3) detail_3_bg = PictureProcessing( "RGB", (pp_1.width / 2.5, pp_1.height/2), (255, 255, 255) ) detail_3_bg.paste_img(top_img=left_bottom_img, base="cc", value=(0, 0)) pp_1.paste_img(top_img=detail_3_bg, base="sw", value=(30, 70)) detailed_images.append(pp_1) return PictureProcessing(im=self.add_pic(detailed_images)) def deal_pic_3(self): # 细节图展示 detailed_images = [] pp_1 = PictureProcessing(r"{}\3.jpg".format(self.root)) # 细节展示 pp_jpg = self.getSpecialImage( category="模特图", instead_category="正面", resize=pp_1.width*1.5 ) detail_3_bg = PictureProcessing( "RGB", (pp_1.width - 100, pp_1.width - 100), (255, 255, 255) ) detail_3_bg.paste_img(top_img=pp_jpg, base="cc", value=(0, 0)) pp_1.paste_img(top_img=detail_3_bg, base="nc", value=(0, 80)) detailed_images.append(pp_1) return PictureProcessing(im=self.add_pic(detailed_images)) def deal_pic_4(self): # 制作角度展示图 bg_color = (246, 246, 246) goods_art_no_list = list(self.data.keys()) detailed_images = [] pp_10 = PictureProcessing(r"{}\5.jpg".format(self.root)) font_1 = ImageFont.truetype(r"resources\ttf\puhui\Regular.ttf", 14) # 颜色名称 goods_title = self.get_text_value("商品标题") if not goods_title: goods_title = "时尚休闲" _pp = PictureProcessing().get_text_image_advanced( font=font_1, align="center", text=goods_title, fill=(0, 0, 0), return_mode="min_image", margins=(0, 0, -100, -100), spacing=20, ) pp_10 = pp_10.paste_img(top_img=_pp, value=(465, 162), base="nw") _pp = PictureProcessing().get_text_image_advanced( font=font_1, align="center", text="VALI", fill=(0, 0, 0), return_mode="min_image", margins=(0, 0, -100, -100), spacing=20, ) pp_10 = pp_10.paste_img(top_img=_pp, value=(465, 205), base="nw") _pp = PictureProcessing().get_text_image_advanced( font=font_1, align="center", text="XL 2XL 3XL 4XL 5XL 6XL", fill=(0, 0, 0), return_mode="min_image", margins=(0, 0, -100, -100), spacing=20, ) pp_10 = pp_10.paste_img(top_img=_pp, value=(465, 248), base="nw") mianliao = self.get_text_value("商品面料") if not goods_title: mianliao = "100%纯棉" _pp = PictureProcessing().get_text_image_advanced( font=font_1, align="center", text=mianliao, fill=(0, 0, 0), return_mode="min_image", margins=(0, 0, -100, -100), spacing=20, ) pp_10 = pp_10.paste_img(top_img=_pp, value=(465, 287), base="nw") detailed_images.append(pp_10) color_pic_list_1 = [] _, pp_jpg_zhengmian = self.image_one_pic( return_orign=True, goods_art_no=goods_art_no_list[0], name="正面", ) pp_jpg_zhengmian = pp_jpg_zhengmian.resize(value=int(pp_10.width / 2.2)) bg_img = PictureProcessing( "RGB", (pp_jpg_zhengmian.width, pp_jpg_zhengmian.height), (239, 239, 239) ) bg_img = bg_img.paste_img(top_img=pp_jpg_zhengmian, base="nc", value=(0, 0)) color_pic_list_1.append(bg_img) _, pp_jpg_beimian = self.image_one_pic( return_orign=True, goods_art_no=goods_art_no_list[0], name="背面", ) pp_jpg_beimian = pp_jpg_beimian.resize(value=int(pp_10.width / 2.2)) bg_img = PictureProcessing( "RGB", (pp_jpg_beimian.width, pp_jpg_beimian.height), (239, 239, 239) ) bg_img = bg_img.paste_img(top_img=pp_jpg_beimian, base="nc", value=(0, 0)) color_pic_list_1.append(bg_img) all_color_pp = PictureProcessing().horizontal_distribution( color_pic_list_1, bg_width=pp_10.width, line_spacing=10, number_per_row=2 ) all_color_pp = all_color_pp.paste_img_invert( top_img=PictureProcessing( "RGB", (pp_10.width, all_color_pp.height + 100), (255, 255, 255) ), base="cc", value=(0, 0), ) detailed_images.append(all_color_pp) pp_11 = PictureProcessing(r"{}\7.jpg".format(self.root)) detailed_images.append(pp_11) return PictureProcessing(im=self.add_pic(detailed_images)) def deal_pic_5(self): # 制作角度展示图 detailed_images = [] pp_10 = PictureProcessing(r"{}\8.jpg".format(self.root)) pp_jpg = self.getSpecialImage( category="模特图", instead_category="正面", resize=pp_10.width * 1.5 ) bg_img = PictureProcessing("RGB", (pp_10.width, pp_10.width), (255, 255, 255)) bg_img = bg_img.paste_img(top_img=pp_jpg, base="nc", value=(0, -50)) detailed_images.append(pp_10) detailed_images.append(bg_img) blank_bg = PictureProcessing("RGB", (bg_img.width, 30), (255, 255, 255)) detailed_images.append(blank_bg) return PictureProcessing(im=self.add_pic(detailed_images)) def deal_pic_6(self): # 制作角度展示图 detailed_images = [] goods_art_no_list = list(self.data.keys()) pp_10 = PictureProcessing(r"{}\10.jpg".format(self.root)) pp_jpg_model, _ = self.image_one_pic( return_orign=True, goods_art_no=goods_art_no_list[0], name="正面", ) pp_jpg_model = pp_jpg_model.resize(value=int(pp_10.width /1.8)) bg_img = PictureProcessing("RGB", (pp_10.width/2.2, pp_10.height-300), (255, 255, 255)) bg_img.paste_img(top_img=pp_jpg_model, base="nc", value=(0, 0)) pp_10 = pp_10.paste_img(top_img=bg_img, base="en", value=(30, 80)) pp_jpg_model, _ = self.image_one_pic( return_orign=True, goods_art_no=goods_art_no_list[0], name="侧视", ) pp_jpg_model = pp_jpg_model.resize(value=int(pp_10.width / 1.3)) bg_img = PictureProcessing( "RGB", (pp_10.width / 2.2, pp_10.height - 300), (255, 255, 255) ) bg_img.paste_img(top_img=pp_jpg_model, base="nc", value=(0, 0)) pp_10 = pp_10.paste_img(top_img=bg_img, base="sw", value=(30, 80)) detailed_images.append(pp_10) return PictureProcessing(im=self.add_pic(detailed_images))