Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
柴进
/
GoogleNanoBananaApp
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
9f656728
authored
2025-12-11 16:05:06 +0800
by
柴进
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
从default词典里获取
1 parent
0909edd6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
143 additions
and
36 deletions
image_generator.py
image_generator.py
View file @
9f65672
...
...
@@ -2604,6 +2604,138 @@ class ImageGenerationWorker(QThread):
# ============================================================================
# 珠宝设计功能模块
# ============================================================================
DEFAULT_JEWELRY_LIBRARY
=
{
"主石形状"
:
[
"圆形"
,
"椭圆形"
,
"梨形"
,
"马眼形"
,
"子弹形(Baguette 子弹刻面)"
,
"垫形"
,
"公主方形"
,
"祖母绿形"
,
"心形"
,
"风筝形"
,
"棺材形(Coffin Cut)"
,
"菱形(Rhombus)"
,
"正六边形"
,
"四叶草形"
,
"梯方形(Tapered Step)"
,
"阿斯切形"
,
"平底刻面风格"
],
"主石材质"
:
[
"莫桑石"
,
"钻石"
,
"黑发晶"
,
"蓝宝石"
,
"红宝石"
,
"粉蓝宝石"
,
"绿碧玺"
,
"黄水晶(天然包体)"
,
"月光石"
,
"摩根石"
,
"海蓝宝"
,
"天然白玉髓"
,
"金绿宝石(猫眼)"
],
"金属"
:
[
"14K黄金"
,
"14K白金"
,
"14K玫瑰金"
,
"18K黄金"
,
"18K白金"
,
"18K玫瑰金"
,
"双色金(白金+黄金)"
,
"950铂金"
,
"925银镀铑"
,
"钛金属"
,
"定制复古做旧金"
],
"花头形式"
:
[
"全halo光环"
,
"半halo光环"
,
"双层halo"
,
"花卉风格光环"
,
"围圈雕刻光环"
,
"围圈密钉镶"
,
"经典圆形光环"
,
"几何六边形光环"
,
"非对称光环"
,
"三石花头(cluster 结构)"
,
"五石花头"
,
"cluster堆砌花头(大小堆/不规则)"
,
"双石结构(Two-stone)"
,
"单石无光环(爪镶/包镶)"
,
"花头侧面结构"
,
"高耸花头(Cathedral halo)"
],
"戒臂结构"
:
[
"直臂"
,
"xox扭臂(交叉扭绞)"
,
">O< 戒臂结构"
,
"<O> 戒臂结构"
,
"V字戒臂"
,
"交叉戒臂"
,
"overlap重叠戒臂"
,
"wave波浪戒臂"
,
"刀锋臂"
,
"大教堂戒臂(高肩设计)"
,
"三股编织戒臂"
,
"分裂戒臂(split shank)"
,
"戒臂夹层"
,
"小夹层戒臂(如莲花夹层设计)"
,
"不对称戒臂"
],
"戒臂处理"
:
[
"密钉镶戒臂"
,
"微密钉镶"
,
"镶石虎爪镶/逼镶"
,
"抛光平滑戒臂"
,
"珠边戒臂(milgrain)"
,
"光金戒臂"
,
"雕刻镂空花丝"
,
"浮雕雕刻(凸雕)"
,
"凹刻雕刻(内刻)"
,
"几何雕刻纹理"
,
"复古米粒边装饰(milgrain)"
,
"编织纹理戒臂"
,
"穿孔镂空细节"
,
"锤纹处理"
],
"辅石镶嵌"
:
[
"三石结构"
,
"五石结构"
,
"cluster自由堆砌侧石"
,
"大小堆组合"
,
"共爪镶侧钻"
,
"包镶侧钻"
,
"轨道镶"
,
"槽镶"
],
"特殊元素"
:
[
"花朵元素"
,
"月亮元素"
,
"星星元素"
,
"日月星组合"
,
"凯尔特结"
,
"叶子图案"
,
"自然植物藤蔓纹理"
,
"蝴蝶结元素"
,
"装饰艺术几何元素"
,
"复古花纹"
,
"哥特式结构元素"
]
}
class
JewelryLibraryManager
:
"""珠宝词库管理器"""
...
...
@@ -2635,35 +2767,14 @@ class JewelryLibraryManager:
return
library
except
Exception
as
e
:
self
.
logger
.
error
(
f
"珠宝词库加载失败: {e},使用默认词库"
)
return
self
.
_load_default_librar
y
()
return
DEFAULT_JEWELRY_LIBRARY
.
cop
y
()
else
:
# 首次使用,创建默认词库
self
.
logger
.
info
(
"未找到珠宝词库文件,创建默认词库"
)
library
=
self
.
_load_default_librar
y
()
library
=
DEFAULT_JEWELRY_LIBRARY
.
cop
y
()
self
.
save_library
(
library
)
return
library
def
_load_default_library
(
self
)
->
Dict
[
str
,
List
[
str
]]:
"""从文件加载默认词库"""
try
:
with
open
(
self
.
default_library_path
,
'r'
,
encoding
=
'utf-8'
)
as
f
:
library
=
json
.
load
(
f
)
self
.
logger
.
info
(
f
"默认词库加载成功: {self.default_library_path}"
)
return
library
except
Exception
as
e
:
self
.
logger
.
error
(
f
"默认词库加载失败: {e}"
)
# 如果默认词库文件也不存在,返回一个最小的词库
return
{
"主石形状"
:
[
"圆形"
,
"椭圆形"
],
"主石材质"
:
[
"钻石"
,
"莫桑石"
],
"金属"
:
[
"14K黄金"
,
"18K白金"
],
"花头形式"
:
[
"经典圆形光环"
],
"戒臂结构"
:
[
"直臂"
],
"戒臂处理"
:
[
"抛光平滑戒臂"
],
"辅石镶嵌"
:
[
"三石结构"
],
"特殊元素"
:
[]
}
def
_migrate_library_if_needed
(
self
,
library
:
Dict
[
str
,
List
[
str
]])
->
Dict
[
str
,
List
[
str
]]:
"""检查并执行数据迁移"""
# 如果存在旧的"主石"字段,需要拆分
...
...
@@ -2687,9 +2798,8 @@ class JewelryLibraryManager:
materials
.
append
(
material
)
# 更新词库
default_library
=
self
.
_load_default_library
()
library
[
"主石形状"
]
=
shapes
if
shapes
else
default_library
[
"主石形状"
]
library
[
"主石材质"
]
=
materials
if
materials
else
default_library
[
"主石材质"
]
library
[
"主石形状"
]
=
shapes
if
shapes
else
DEFAULT_JEWELRY_LIBRARY
[
"主石形状"
]
library
[
"主石材质"
]
=
materials
if
materials
else
DEFAULT_JEWELRY_LIBRARY
[
"主石材质"
]
# 保留旧字段作为备份
# library.pop("主石", None) # 可以选择是否移除
...
...
@@ -2702,9 +2812,8 @@ class JewelryLibraryManager:
def
_extract_shape
(
self
,
item
:
str
)
->
Optional
[
str
]:
"""从主石描述中提取形状"""
# 从默认词库文件获取形状列表,确保同步
default_library
=
self
.
_load_default_library
()
shapes
=
default_library
.
get
(
"主石形状"
,
[])
# 直接从 DEFAULT_JEWELRY_LIBRARY 获取形状列表,确保同步
shapes
=
DEFAULT_JEWELRY_LIBRARY
.
get
(
"主石形状"
,
[])
for
shape
in
shapes
:
# 处理带括号的形状(如"子弹形(Baguette 子弹刻面)")
if
"("
in
shape
:
...
...
@@ -2717,9 +2826,8 @@ class JewelryLibraryManager:
def
_extract_material
(
self
,
item
:
str
)
->
Optional
[
str
]:
"""从主石描述中提取材质"""
# 从默认词库文件获取形状列表,确保同步
default_library
=
self
.
_load_default_library
()
shapes
=
default_library
.
get
(
"主石形状"
,
[])
# 直接从 DEFAULT_JEWELRY_LIBRARY 获取形状列表,确保同步
shapes
=
DEFAULT_JEWELRY_LIBRARY
.
get
(
"主石形状"
,
[])
for
shape
in
shapes
:
# 处理带括号的形状(如"子弹形(Baguette 子弹刻面)")
shape_base
=
shape
.
split
(
"("
)[
0
]
if
"("
in
shape
else
shape
...
...
@@ -2786,9 +2894,8 @@ class JewelryLibraryManager:
Args:
category: 类别名称
"""
default_library
=
self
.
_load_default_library
()
if
category
in
default_library
:
self
.
library
[
category
]
=
default_library
[
category
]
.
copy
()
if
category
in
DEFAULT_JEWELRY_LIBRARY
:
self
.
library
[
category
]
=
DEFAULT_JEWELRY_LIBRARY
[
category
]
.
copy
()
self
.
save_library
()
self
.
logger
.
info
(
f
"恢复默认词库: {category}"
)
else
:
...
...
@@ -2796,7 +2903,7 @@ class JewelryLibraryManager:
def
reset_all
(
self
):
"""恢复所有类别的默认词库"""
self
.
library
=
self
.
_load_default_librar
y
()
self
.
library
=
DEFAULT_JEWELRY_LIBRARY
.
cop
y
()
self
.
save_library
()
self
.
logger
.
info
(
"恢复所有默认词库"
)
...
...
Please
register
or
sign in
to post a comment