| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import threading
- import time
- import os
- import settings
- from service.remove_bg_ali import RemoveBgALi
- from service.generate_main_image.grenerate_main_image_test import (
- GeneratePic,
- )
- from service.generate_main_image.image_deal_base_func import *
- from functools import partial
- import io
- from PIL import Image
- from .base import check_path, get_date_time_original
- from middleware import UnicornException
- class OnePicTest():
- # is_end = Signal()
- def __init__(self, pic_path="", is_auto_closed=False):
- # super().__init__()
- # 加载默认配置
- # self.ui = Ui_Form()
- # self.ui.setupUi(self)
- self.pic_path = pic_path
- self.is_auto_closed = False
- # self.init()
- # self.show()
- # if pic_path:
- # self.run()
- def call_back_deal_image(self, data):
- # 处理后回调
- print(data)
- if data["code"] == 0:
- return data
- else:
- if data["message"]:
- raise UnicornException(data["message"])
- def deal_image(self, image_path):
- # 处理加工图片
- return_data = {"code": 99, "message": "", "data": {}}
- # =============清空temp文件夹================
- check_path("temp")
- check_path("temp\pic_test")
- root = r"{}\temp\pic_test".format(os.getcwd())
- for file_name in os.listdir(root):
- path = "{}\{}".format(root, file_name)
- if os.path.isfile(path):
- os.remove(path)
- # ==============抠图处理=====================
- remove_pic_ins = RemoveBgALi()
- file = os.path.split(image_path)[1]
- cut_image_path = r"{}\temp\pic_test\{}.png".format(
- os.getcwd(), os.path.splitext(file)[0]
- ).replace("\\", "/")
- remove_pic_ins.get_image_cut(file_path=image_path, out_file_path=cut_image_path)
- # ==============生成主图====================
- main_out_path = r"{}\temp\pic_test\{}-主图.jpg".format(
- os.getcwd(), os.path.splitext(file)[0],
- )
- print("image_path", image_path)
- print("cut_image_path", cut_image_path)
- print("main_out_path", main_out_path)
- try:
- GeneratePic().run(
- image_path=image_path,
- cut_image_path=cut_image_path,
- out_path=main_out_path,
- image_deal_mode=1,
- resize_mode=1,
- out_pic_size=1024,
- is_logo=False,
- )
- except Exception as e:
- print(e)
- raise UnicornException("处理失败,请重试")
- # return_data["code"] = 0
- # return_data["data"]["image_path"] = image_path
- # return_data["data"]["image_cutout_path"] = cut_image_path
- # return_data["data"]["image_main_path"] = main_out_path
- return main_out_path
- def HandlerMainImage(self):
- # 先做整体校验
- if not os.path.exists(self.pic_path):
- raise UnicornException("图片不存在")
- image_pth = Image.open(self.pic_path)
- if image_pth.mode == "RGBA":
- raise UnicornException("抠图图片不能是PNG")
- return_data = self.deal_image(self.pic_path)
- # if return_data["message"]:
- # raise UnicornException(return_data["message"])
- return return_data.replace("\\", "/")
- if __name__ == "__main__":
- pic = OnePicTest(pic_path="C:/Users/15001/Desktop/mmexport1739929178317.jpg")
- pic.HandlerMainImage()
|