Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cut_pic
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dovahkiin
cut_pic
Commits
189d0b20
Commit
189d0b20
authored
Aug 26, 2023
by
dovahkiin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加智能切割寻找图层部分代码。
parent
7ce7000a
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
49 additions
and
14 deletions
+49
-14
comm_class.py
comm_class.py
+1
-0
cut_pic.py
cut_pic.py
+48
-14
No files found.
comm_class.py
View file @
189d0b20
...
@@ -10,6 +10,7 @@ class flag_data:
...
@@ -10,6 +10,7 @@ class flag_data:
cobit
=
False
cobit
=
False
show
=
False
show
=
False
equal_size
=
True
equal_size
=
True
Auto_cut_1
=
False
def
__str__
(
self
)
->
str
:
def
__str__
(
self
)
->
str
:
return
"psd名:{}, english:{}, cobit:{}, show:{}, equal_size:{}"
.
format
(
self
.
psd_name
,
self
.
english
,
self
.
cobit
,
self
.
show
,
self
.
equal_size
)
return
"psd名:{}, english:{}, cobit:{}, show:{}, equal_size:{}"
.
format
(
self
.
psd_name
,
self
.
english
,
self
.
cobit
,
self
.
show
,
self
.
equal_size
)
...
...
cut_pic.py
View file @
189d0b20
...
@@ -12,9 +12,13 @@ from psd_tools import PSDImage
...
@@ -12,9 +12,13 @@ from psd_tools import PSDImage
from
PyQt5.QtWidgets
import
QMessageBox
,
QListWidgetItem
from
PyQt5.QtWidgets
import
QMessageBox
,
QListWidgetItem
from
PyQt5.QtGui
import
QColor
,
QBrush
from
PyQt5.QtGui
import
QColor
,
QBrush
from
skimage.metrics
import
structural_similarity
as
ssim
from
comm_class
import
flag_data
,
lay_item
from
comm_class
import
flag_data
,
lay_item
auto_cut_info
=
{}
class
exc
(
object
):
class
exc
(
object
):
excel_file_name
=
'image coordinate size.xlsx'
# EXCEL名称
excel_file_name
=
'image coordinate size.xlsx'
# EXCEL名称
image_name_colum
=
'A'
image_name_colum
=
'A'
...
@@ -178,6 +182,20 @@ def check_path(path):
...
@@ -178,6 +182,20 @@ def check_path(path):
else
:
else
:
return
0
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
):
def
extractLayerImge
(
lay_info
:
lay_item
,
psd_name
:
str
,
lwdtI
:
QListWidgetItem
):
global
exc_c
global
exc_c
psd
=
PSDImage
.
open
(
psd_name
)
psd
=
PSDImage
.
open
(
psd_name
)
...
@@ -244,10 +262,13 @@ def extractLayerImge(lay_info:lay_item, psd_name:str, lwdtI:QListWidgetItem):
...
@@ -244,10 +262,13 @@ def extractLayerImge(lay_info:lay_item, psd_name:str, lwdtI:QListWidgetItem):
try
:
try
:
if
lay_info
.
w
!=
0
or
lay_info
.
h
!=
0
:
if
lay_info
.
w
!=
0
or
lay_info
.
h
!=
0
:
if
lay_info
.
Auto_cut_1
:
pass
else
:
layer_image
=
psd
.
composite
(
viewport
=
pos
,
force
=
True
)
layer_image
=
psd
.
composite
(
viewport
=
pos
,
force
=
True
)
# layer_image.show(layer_name)
# layer_image.show(layer_name)
print
(
"[# layer_image #]:"
,
layer_image
,
"xywh:"
,
xywh
)
#
print("[# layer_image #]:", layer_image, "xywh:", xywh)
# temp_psd_show = psd.compose(True)
# temp_psd_show = psd.compose(True)
# temp_psd_show.show()
# temp_psd_show.show()
if
lay_info
.
show
:
if
lay_info
.
show
:
...
@@ -277,6 +298,7 @@ def get_lay_info(psd_info:flag_data):
...
@@ -277,6 +298,7 @@ def get_lay_info(psd_info:flag_data):
max_w
=
max_h
=
0
max_w
=
max_h
=
0
max_x
=
max_y
=
-
1
max_x
=
max_y
=
-
1
layer_list
=
[]
layer_list
=
[]
for
layer
in
psd
.
descendants
():
for
layer
in
psd
.
descendants
():
if
layer
.
is_group
():
if
layer
.
is_group
():
# print(layer)
# print(layer)
...
@@ -293,11 +315,23 @@ def get_lay_info(psd_info:flag_data):
...
@@ -293,11 +315,23 @@ def get_lay_info(psd_info:flag_data):
if
max_y
>
layer
.
top
or
max_y
==
-
1
:
if
max_y
>
layer
.
top
or
max_y
==
-
1
:
max_y
=
layer
.
top
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
layer
.
visible
=
False
# temp_psd_show = psd.compose(True)
# temp_psd_show = psd.compose(True)
# temp_psd_show.show()
# 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
]
=
[]
layer_info_list
:
list
[
lay_item
]
=
[]
for
layer
in
layer_list
:
for
layer
in
layer_list
:
layer_info_item
=
lay_item
()
layer_info_item
=
lay_item
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment