Commit 189d0b20 authored by dovahkiin's avatar dovahkiin

添加智能切割寻找图层部分代码。

parent 7ce7000a
......@@ -10,6 +10,7 @@ class flag_data:
cobit = False
show = False
equal_size = True
Auto_cut_1 = False
def __str__(self) -> str:
return "psd名:{}, english:{}, cobit:{}, show:{}, equal_size:{}".format(self.psd_name, self.english, self.cobit, self.show, self.equal_size)
......
......@@ -12,9 +12,13 @@ from psd_tools import PSDImage
from PyQt5.QtWidgets import QMessageBox, QListWidgetItem
from PyQt5.QtGui import QColor, QBrush
from skimage.metrics import structural_similarity as ssim
from comm_class import flag_data, lay_item
auto_cut_info = {}
class exc(object):
excel_file_name = 'image coordinate size.xlsx' # EXCEL名称
image_name_colum = 'A'
......@@ -178,6 +182,20 @@ def check_path(path):
else:
return 0
def get_middle_position(x, y, w, h):
return x + w//2, y + h//2
def is_in_pos_list(x, y, w, h, pos_list:dict):
for pos in pos_list.keys():
# 误差设置
if abs(x - pos[0]) <= 2 and abs(y - pos[1]) <= 2:
if any([w == i.width and h == i.height for i in pos_list[pos]]):
return x, y
else:
return pos[0], pos[1]
return x, y
def extractLayerImge(lay_info:lay_item, psd_name:str, lwdtI:QListWidgetItem):
global exc_c
psd = PSDImage.open(psd_name)
......@@ -244,19 +262,22 @@ def extractLayerImge(lay_info:lay_item, psd_name:str, lwdtI:QListWidgetItem):
try:
if lay_info.w != 0 or lay_info.h != 0:
layer_image = psd.composite(viewport = pos, force=True)
# layer_image.show(layer_name)
print("[# layer_image #]:", layer_image, "xywh:", xywh)
# temp_psd_show = psd.compose(True)
# temp_psd_show.show()
if lay_info.show:
layer_image.show()
folder = os.path.exists(psd_name[:-4])
if not folder: #判断是否存在文件夹如果不存在则创建为文件夹
os.makedirs(psd_name[:-4])
layer_image.save(layer_name)
lay_info.layer.visible = False
if lay_info.Auto_cut_1:
pass
else:
layer_image = psd.composite(viewport = pos, force=True)
# layer_image.show(layer_name)
# print("[# layer_image #]:", layer_image, "xywh:", xywh)
# temp_psd_show = psd.compose(True)
# temp_psd_show.show()
if lay_info.show:
layer_image.show()
folder = os.path.exists(psd_name[:-4])
if not folder: #判断是否存在文件夹如果不存在则创建为文件夹
os.makedirs(psd_name[:-4])
layer_image.save(layer_name)
lay_info.layer.visible = False
# {}[0]
except KeyError:
color = QColor(220, 220, 41)
......@@ -277,6 +298,7 @@ def get_lay_info(psd_info:flag_data):
max_w = max_h = 0
max_x = max_y= -1
layer_list = []
for layer in psd.descendants():
if layer.is_group():
# print(layer)
......@@ -293,11 +315,23 @@ def get_lay_info(psd_info:flag_data):
if max_y > layer.top or max_y == -1:
max_y = layer.top
# 计算中间点
middle_pos = get_middle_position(layer.left, layer.top, layer.width, layer.height)
# 判断是否存在
middle_pos = is_in_pos_list(middle_pos[0], middle_pos[1], layer.width, layer.height, auto_cut_info)
if middle_pos in auto_cut_info:
auto_cut_info[middle_pos].append(layer)
else:
auto_cut_info[middle_pos] = [layer]
layer.visible = False
# temp_psd_show = psd.compose(True)
# temp_psd_show.show()
# print(auto_cut_infor)
for info_i in auto_cut_info.keys():
print(info_i)
for data_i in auto_cut_info[info_i]:
print("\t", data_i)
layer_info_list:list[lay_item] = []
for layer in layer_list:
layer_info_item = lay_item()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment