|
@@ -2575,6 +2575,27 @@ class DeepSeekService
|
|
|
|
|
|
|
|
private function getArtStylePromptMappings($art_style='')
|
|
private function getArtStylePromptMappings($art_style='')
|
|
|
{
|
|
{
|
|
|
|
|
+ // 优先从画风表读取(入库后以表数据为准,保持原返回结构:['画风名' => ['aliases' => [...], 'prompt' => "..."]]
|
|
|
|
|
+ $dbRows = DB::table('mp_art_styles')
|
|
|
|
|
+ ->where('is_deleted', 0)
|
|
|
|
|
+ ->orderBy('id')
|
|
|
|
|
+ ->get(['art_style', 'aliases', 'prompt']);
|
|
|
|
|
+ if ($dbRows->isNotEmpty()) {
|
|
|
|
|
+ $arr = [];
|
|
|
|
|
+ foreach ($dbRows as $row) {
|
|
|
|
|
+ $arr[$row->art_style] = [
|
|
|
|
|
+ 'aliases' => is_string($row->aliases) ? json_decode($row->aliases, true) : [],
|
|
|
|
|
+ 'prompt' => (string)$row->prompt,
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($art_style) {
|
|
|
|
|
+ return isset($arr[$art_style]) ? $arr[$art_style]['prompt'] : '';
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return $arr;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
$arr = [
|
|
$arr = [
|
|
|
'唯美真人风格' => [
|
|
'唯美真人风格' => [
|
|
|
'aliases' => ['唯美真人风格', '唯美真人', '唯美', '真人'],
|
|
'aliases' => ['唯美真人风格', '唯美真人', '唯美', '真人'],
|
|
@@ -2868,70 +2889,118 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function getArtStyleShortPromptByInput($inputArtStyle) {
|
|
public function getArtStyleShortPromptByInput($inputArtStyle) {
|
|
|
|
|
+ // 优先从画风表读取;character_prefix/scene_prefix 缺失时用通用 prompt 兜底,均缺失则返回空数组
|
|
|
|
|
+ $row = DB::table('mp_art_styles')
|
|
|
|
|
+ ->where('art_style', $inputArtStyle)
|
|
|
|
|
+ ->where('is_deleted', 0)
|
|
|
|
|
+ ->first(['character_prefix', 'scene_prefix', 'prompt']);
|
|
|
|
|
+ if ($row) {
|
|
|
|
|
+ $prompt = (string)$row->prompt;
|
|
|
|
|
+ $result = [
|
|
|
|
|
+ 'character_prefix' => (string)$row->character_prefix !== '' ? (string)$row->character_prefix : $prompt,
|
|
|
|
|
+ 'scene_prefix' => (string)$row->scene_prefix !== '' ? (string)$row->scene_prefix : $prompt,
|
|
|
|
|
+ ];
|
|
|
|
|
+ // 前缀与通用提示词均不存在时返回空数组
|
|
|
|
|
+ if ($result['character_prefix'] === '' && $result['scene_prefix'] === '') {
|
|
|
|
|
+ return [];
|
|
|
|
|
+ }
|
|
|
|
|
+ return $result;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
$stylePrefixes = [
|
|
$stylePrefixes = [
|
|
|
'唯美真人风格' => [
|
|
'唯美真人风格' => [
|
|
|
'character_prefix' => '唯美真人风格,电影级摄影,真实人物,高级质感,自然光影,肤质细腻,景深虚化,超高清,8K画质,情绪表达丰富',
|
|
'character_prefix' => '唯美真人风格,电影级摄影,真实人物,高级质感,自然光影,肤质细腻,景深虚化,超高清,8K画质,情绪表达丰富',
|
|
|
- 'scene_prefix' => '唯美真人风格,电影感场景,真实环境,自然光影,高级色彩,细节丰富,超高清摄影,氛围感强'
|
|
|
|
|
|
|
+ 'scene_prefix' => '唯美真人风格,电影感场景,真实环境,自然光影,高级色彩,细节丰富,超高清摄影,氛围感强',
|
|
|
|
|
+ 'prompt' => '唯美真人风格,电影级摄影,真实光影,高级质感,自然色彩,细节丰富,氛围感强,超高清,8K画质'
|
|
|
],
|
|
],
|
|
|
'真人古风风格' => [
|
|
'真人古风风格' => [
|
|
|
'character_prefix' => '真人古风风格,东方古典美学,真实人物,古代服饰,精致妆容,电影级摄影,国风质感,超高清',
|
|
'character_prefix' => '真人古风风格,东方古典美学,真实人物,古代服饰,精致妆容,电影级摄影,国风质感,超高清',
|
|
|
- 'scene_prefix' => '真人古风风格,东方建筑,古典园林,电影级光影,国风美学,真实场景,高细节,超高清'
|
|
|
|
|
|
|
+ 'scene_prefix' => '真人古风风格,东方建筑,古典园林,电影级光影,国风美学,真实场景,高细节,超高清',
|
|
|
|
|
+ 'prompt' => '真人古风风格,东方古典美学,国风质感,古韵氛围,电影级摄影,精致细节,高级光影,超高清'
|
|
|
],
|
|
],
|
|
|
'日系动漫风格' => [
|
|
'日系动漫风格' => [
|
|
|
'character_prefix' => '日系动漫风格,二次元角色,精致线稿,高质量赛璐璐上色,细腻表情,动画电影质感,高细节',
|
|
'character_prefix' => '日系动漫风格,二次元角色,精致线稿,高质量赛璐璐上色,细腻表情,动画电影质感,高细节',
|
|
|
- 'scene_prefix' => '日系动漫风格,动画电影场景,唯美背景,细腻光影,高质量绘制,色彩丰富,氛围感强'
|
|
|
|
|
|
|
+ 'scene_prefix' => '日系动漫风格,动画电影场景,唯美背景,细腻光影,高质量绘制,色彩丰富,氛围感强',
|
|
|
|
|
+ 'prompt' => '日系动漫风格,高质量二次元画风,精致线稿,细腻上色,动画电影质感,高细节,唯美光影'
|
|
|
],
|
|
],
|
|
|
'国漫风格' => [
|
|
'国漫风格' => [
|
|
|
'character_prefix' => '国漫风格,高品质角色设计,东方审美,精致建模感,细腻刻画,动态表现强,电影级渲染',
|
|
'character_prefix' => '国漫风格,高品质角色设计,东方审美,精致建模感,细腻刻画,动态表现强,电影级渲染',
|
|
|
- 'scene_prefix' => '国漫风格,东方幻想场景,精细绘制,大气构图,电影级光影,高品质渲染'
|
|
|
|
|
|
|
+ 'scene_prefix' => '国漫风格,东方幻想场景,精细绘制,大气构图,电影级光影,高品质渲染',
|
|
|
|
|
+ 'prompt' => '国漫风格,东方幻想美学,高品质角色设计,精致渲染,细腻刻画,电影级光影,高细节'
|
|
|
],
|
|
],
|
|
|
'Q版卡通风格' => [
|
|
'Q版卡通风格' => [
|
|
|
'character_prefix' => 'Q版卡通风格,大头小身比例,可爱造型,圆润线条,丰富表情,萌系设计,高质量插画',
|
|
'character_prefix' => 'Q版卡通风格,大头小身比例,可爱造型,圆润线条,丰富表情,萌系设计,高质量插画',
|
|
|
- 'scene_prefix' => 'Q版卡通风格,可爱场景,色彩鲜艳,童趣氛围,简洁细腻,绘本质感'
|
|
|
|
|
|
|
+ 'scene_prefix' => 'Q版卡通风格,可爱场景,色彩鲜艳,童趣氛围,简洁细腻,绘本质感',
|
|
|
|
|
+ 'prompt' => 'Q版卡通风格,可爱萌系画风,大头小身比例,圆润造型,鲜艳色彩,童趣氛围,高品质插画'
|
|
|
],
|
|
],
|
|
|
'简约扁平风格' => [
|
|
'简约扁平风格' => [
|
|
|
'character_prefix' => '简约扁平风格,矢量插画,几何造型,简洁线条,干净配色,现代设计感',
|
|
'character_prefix' => '简约扁平风格,矢量插画,几何造型,简洁线条,干净配色,现代设计感',
|
|
|
- 'scene_prefix' => '简约扁平风格,矢量场景,几何构图,色彩简洁,现代感设计,视觉清爽'
|
|
|
|
|
|
|
+ 'scene_prefix' => '简约扁平风格,矢量场景,几何构图,色彩简洁,现代感设计,视觉清爽',
|
|
|
|
|
+ 'prompt' => '简约扁平风格,矢量插画,现代设计感,几何构图,简洁线条,干净配色,视觉清爽'
|
|
|
],
|
|
],
|
|
|
'武侠风格' => [
|
|
'武侠风格' => [
|
|
|
'character_prefix' => '武侠风格,东方侠客气质,江湖人物,飘逸服饰,凌厉气场,电影级光影,高细节绘制',
|
|
'character_prefix' => '武侠风格,东方侠客气质,江湖人物,飘逸服饰,凌厉气场,电影级光影,高细节绘制',
|
|
|
- 'scene_prefix' => '武侠风格,江湖场景,古道山林,客栈酒馆,刀光剑影,大气构图,东方美学'
|
|
|
|
|
|
|
+ 'scene_prefix' => '武侠风格,江湖场景,古道山林,客栈酒馆,刀光剑影,大气构图,东方美学',
|
|
|
|
|
+ 'prompt' => '武侠风格,东方江湖美学,侠义氛围,飘逸意境,大气构图,电影级光影,高细节绘制'
|
|
|
],
|
|
],
|
|
|
'古风仙侠风格' => [
|
|
'古风仙侠风格' => [
|
|
|
'character_prefix' => '古风仙侠风格,仙气飘逸,东方幻想角色,精致古装,灵气环绕,电影级特效,高品质渲染',
|
|
'character_prefix' => '古风仙侠风格,仙气飘逸,东方幻想角色,精致古装,灵气环绕,电影级特效,高品质渲染',
|
|
|
- 'scene_prefix' => '古风仙侠风格,仙境场景,云海仙山,灵气缭绕,梦幻光效,东方幻想美学'
|
|
|
|
|
|
|
+ 'scene_prefix' => '古风仙侠风格,仙境场景,云海仙山,灵气缭绕,梦幻光效,东方幻想美学',
|
|
|
|
|
+ 'prompt' => '古风仙侠风格,东方幻想美学,仙气缭绕,灵气氛围,梦幻光效,电影级渲染,高品质画面'
|
|
|
],
|
|
],
|
|
|
'新中式水墨风格' => [
|
|
'新中式水墨风格' => [
|
|
|
'character_prefix' => '新中式水墨风格,国风写意,水墨晕染,留白艺术,东方韵味,诗意氛围,高级插画',
|
|
'character_prefix' => '新中式水墨风格,国风写意,水墨晕染,留白艺术,东方韵味,诗意氛围,高级插画',
|
|
|
- 'scene_prefix' => '新中式水墨风格,山水意境,墨韵渲染,留白构图,东方美学,诗意场景'
|
|
|
|
|
|
|
+ 'scene_prefix' => '新中式水墨风格,山水意境,墨韵渲染,留白构图,东方美学,诗意场景',
|
|
|
|
|
+ 'prompt' => '新中式水墨风格,东方水墨美学,写意表达,墨韵渲染,留白构图,诗意氛围,高级艺术感'
|
|
|
],
|
|
],
|
|
|
'写实插画风格' => [
|
|
'写实插画风格' => [
|
|
|
'character_prefix' => '写实插画风格,半写实人物,细节丰富,真实比例,数字绘画,高质量渲染,电影级质感',
|
|
'character_prefix' => '写实插画风格,半写实人物,细节丰富,真实比例,数字绘画,高质量渲染,电影级质感',
|
|
|
- 'scene_prefix' => '写实插画风格,高细节环境,数字绘景,真实光影,层次丰富,电影感构图'
|
|
|
|
|
|
|
+ 'scene_prefix' => '写实插画风格,高细节环境,数字绘景,真实光影,层次丰富,电影感构图',
|
|
|
|
|
+ 'prompt' => '写实插画风格,数字绘画,真实质感,细节丰富,光影自然,电影感构图,高品质渲染'
|
|
|
],
|
|
],
|
|
|
'3D卡通风格' => [
|
|
'3D卡通风格' => [
|
|
|
'character_prefix' => '3D卡通风格,高品质三维建模,皮克斯动画质感,表情生动,角色可爱,细腻渲染',
|
|
'character_prefix' => '3D卡通风格,高品质三维建模,皮克斯动画质感,表情生动,角色可爱,细腻渲染',
|
|
|
- 'scene_prefix' => '3D卡通风格,动画电影场景,三维建模,色彩明快,光影柔和,高品质渲染'
|
|
|
|
|
|
|
+ 'scene_prefix' => '3D卡通风格,动画电影场景,三维建模,色彩明快,光影柔和,高品质渲染',
|
|
|
|
|
+ 'prompt' => '3D卡通风格,高品质三维渲染,动画电影质感,角色生动,色彩明快,细节丰富'
|
|
|
],
|
|
],
|
|
|
'条漫风格' => [
|
|
'条漫风格' => [
|
|
|
'character_prefix' => '条漫风格,韩漫质感,精致线稿,人物颜值高,细腻上色,剧情漫画风,高质量绘制',
|
|
'character_prefix' => '条漫风格,韩漫质感,精致线稿,人物颜值高,细腻上色,剧情漫画风,高质量绘制',
|
|
|
- 'scene_prefix' => '条漫风格,漫画背景,剧情分镜感,细腻光影,现代漫画质感'
|
|
|
|
|
|
|
+ 'scene_prefix' => '条漫风格,漫画背景,剧情分镜感,细腻光影,现代漫画质感',
|
|
|
|
|
+ 'prompt' => '条漫风格,韩漫质感,精致线稿,细腻上色,剧情感强,视觉表现突出,高质量绘制'
|
|
|
],
|
|
],
|
|
|
'赛博朋克风格' => [
|
|
'赛博朋克风格' => [
|
|
|
'character_prefix' => '赛博朋克风格,未来科技感,机械义体,霓虹光效,高对比色彩,科幻都市氛围,电影级渲染',
|
|
'character_prefix' => '赛博朋克风格,未来科技感,机械义体,霓虹光效,高对比色彩,科幻都市氛围,电影级渲染',
|
|
|
- 'scene_prefix' => '赛博朋克风格,未来都市,霓虹街道,全息广告,机械科技元素,夜景氛围,电影级光影'
|
|
|
|
|
|
|
+ 'scene_prefix' => '赛博朋克风格,未来都市,霓虹街道,全息广告,机械科技元素,夜景氛围,电影级光影',
|
|
|
|
|
+ 'prompt' => '赛博朋克风格,未来科技感,霓虹光效,高对比色彩,机械元素,科幻都市氛围,电影级渲染'
|
|
|
],
|
|
],
|
|
|
'暗黑悬疑风格' => [
|
|
'暗黑悬疑风格' => [
|
|
|
'character_prefix' => '暗黑悬疑风格,神秘压抑氛围,强烈明暗对比,电影级灯光,细腻刻画,悬疑感十足',
|
|
'character_prefix' => '暗黑悬疑风格,神秘压抑氛围,强烈明暗对比,电影级灯光,细腻刻画,悬疑感十足',
|
|
|
- 'scene_prefix' => '暗黑悬疑风格,阴郁环境,低饱和色调,迷雾光影,神秘气氛,电影感构图'
|
|
|
|
|
|
|
+ 'scene_prefix' => '暗黑悬疑风格,阴郁环境,低饱和色调,迷雾光影,神秘气氛,电影感构图',
|
|
|
|
|
+ 'prompt' => '暗黑悬疑风格,低饱和色调,神秘氛围,压抑光影,电影级灯光,悬念感强,高细节表现'
|
|
|
],
|
|
],
|
|
|
'治愈清新风格' => [
|
|
'治愈清新风格' => [
|
|
|
'character_prefix' => '治愈清新风格,温暖柔和色调,干净画面,自然光线,亲和气质,轻松愉悦氛围,高品质插画',
|
|
'character_prefix' => '治愈清新风格,温暖柔和色调,干净画面,自然光线,亲和气质,轻松愉悦氛围,高品质插画',
|
|
|
- 'scene_prefix' => '治愈清新风格,阳光明亮,自然环境,温暖色彩,舒适氛围,细腻绘制,疗愈感强'
|
|
|
|
|
|
|
+ 'scene_prefix' => '治愈清新风格,阳光明亮,自然环境,温暖色彩,舒适氛围,细腻绘制,疗愈感强',
|
|
|
|
|
+ 'prompt' => '治愈清新风格,温暖柔和色调,自然光线,清新配色,舒适氛围,细腻绘制,疗愈感十足'
|
|
|
]
|
|
]
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
- return isset($stylePrefixes[$inputArtStyle]) ? $stylePrefixes[$inputArtStyle] : [];
|
|
|
|
|
|
|
+ if (isset($stylePrefixes[$inputArtStyle])) {
|
|
|
|
|
+ $item = $stylePrefixes[$inputArtStyle];
|
|
|
|
|
+ $prompt = (string)($item['prompt'] ?? '');
|
|
|
|
|
+ // 前缀缺失时用通用 prompt 兜底
|
|
|
|
|
+ $result = [
|
|
|
|
|
+ 'character_prefix' => !empty($item['character_prefix']) ? $item['character_prefix'] : $prompt,
|
|
|
|
|
+ 'scene_prefix' => !empty($item['scene_prefix']) ? $item['scene_prefix'] : $prompt,
|
|
|
|
|
+ ];
|
|
|
|
|
+ // 与表分支一致:前缀与通用提示词均不存在时返回空数组
|
|
|
|
|
+ if ($result['character_prefix'] === '' && $result['scene_prefix'] === '') {
|
|
|
|
|
+ return [];
|
|
|
|
|
+ }
|
|
|
|
|
+ return $result;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return [];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private function normalizeArtStyleInput($value): string
|
|
private function normalizeArtStyleInput($value): string
|