diff --git a/%APPDATA%/Adobe/CEP/extensions/AdminPanel/CSXS/manifest.xml b/%APPDATA%/Adobe/CEP/extensions/AdminPanel/CSXS/manifest.xml
deleted file mode 100644
index 3554578..0000000
--- a/%APPDATA%/Adobe/CEP/extensions/AdminPanel/CSXS/manifest.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ./index.html
-
- --enable-nodejs
- --mixed-context
-
-
-
-
- true
-
-
-
- Panel
-
-
-
- 800
- 1200
-
-
- 400
- 600
-
-
-
-
-
-
-
-
diff --git a/%APPDATA%/Adobe/CEP/extensions/AdminPanel/index.html b/%APPDATA%/Adobe/CEP/extensions/AdminPanel/index.html
deleted file mode 100644
index aa65222..0000000
--- a/%APPDATA%/Adobe/CEP/extensions/AdminPanel/index.html
+++ /dev/null
@@ -1,146 +0,0 @@
-
-
-
-
- Designer Admin Panel
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/%APPDATA%/Adobe/CEP/extensions/AdminPanel/检查并启用CEP.bat b/%APPDATA%/Adobe/CEP/extensions/AdminPanel/检查并启用CEP.bat
deleted file mode 100644
index 75f09e0..0000000
--- a/%APPDATA%/Adobe/CEP/extensions/AdminPanel/检查并启用CEP.bat
+++ /dev/null
@@ -1,41 +0,0 @@
-@echo off
-chcp 65001 >nul
-echo ========================================
-echo CEP 扩展调试模式检查工具
-echo ========================================
-echo.
-
-echo [1] 检查当前 CEP 调试模式状态...
-reg query "HKEY_CURRENT_USER\Software\Adobe\CSXS.8" /v PlayerDebugMode 2>nul
-if %errorlevel% neq 0 (
- echo ❌ 未找到 CSXS.8 调试模式配置
-) else (
- echo ✅ CSXS.8 配置已存在
-)
-echo.
-
-echo [2] 启用 CEP 调试模式...
-reg add "HKEY_CURRENT_USER\Software\Adobe\CSXS.8" /v PlayerDebugMode /t REG_SZ /d 1 /f >nul
-reg add "HKEY_CURRENT_USER\Software\Adobe\CSXS.9" /v PlayerDebugMode /t REG_SZ /d 1 /f >nul
-reg add "HKEY_CURRENT_USER\Software\Adobe\CSXS.10" /v PlayerDebugMode /t REG_SZ /d 1 /f >nul
-reg add "HKEY_CURRENT_USER\Software\Adobe\CSXS.11" /v PlayerDebugMode /t REG_SZ /d 1 /f >nul
-
-echo ✅ CEP 调试模式已启用(CSXS 8/9/10/11)
-echo.
-
-echo [3] 检查插件安装位置...
-set "EXT_DIR=%APPDATA%\Adobe\CEP\extensions\AdminPanel"
-if exist "%EXT_DIR%\" (
- echo ✅ 插件已安装到: %EXT_DIR%
- dir "%EXT_DIR%" /B
-) else (
- echo ❌ 插件未安装,请运行安装命令
-)
-echo.
-
-echo ========================================
-echo 操作完成!
-echo 请 [完全关闭 Photoshop] 后重新打开
-echo ========================================
-pause
-
diff --git a/AI改图-双图.py b/AI改图-双图.py
new file mode 100644
index 0000000..4fb70e9
--- /dev/null
+++ b/AI改图-双图.py
@@ -0,0 +1,223 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+双图合成处理 - 基于 multi_image_merge 方法
+使用 Gemini 3 Pro Image Preview 模型进行双图创意合成
+
+特点:
+- 支持本地图片和网络图片 URL 两种输入方式
+- 支持自定义提示词
+- 创意合成、场景融合
+
+使用方法:
+1. 安装依赖:pip install openai requests
+2. 在下方配置区填入您的 API Key
+3. 修改文件底部的参数变量
+4. 运行:python 双图合成处理.py
+
+获取 API Key:https://api.laozhang.ai/token
+"""
+
+import base64
+import re
+import os
+from openai import OpenAI
+
+# ========== 配置区(请填入您的 API Key)==========
+API_KEY = "sk-KZ9TGgZAWnzY1T3c90B277F72e184c26A53f22440e08E86e" # 替换为您的 API Key
+BASE_URL = "https://api.laozhang.ai/v1"
+
+# 模型选择
+MODEL = "gemini-3-pro-image-preview" # 最新版,支持更高质量
+# MODEL = "gemini-2.5-flash-image" # 稳定版,价格更低($0.025 vs $0.05)
+# ================================================
+
+
+def extract_and_save_image(content: str, filename: str) -> bool:
+ """从响应内容中提取 base64 图片并保存"""
+ # 匹配 markdown 格式的 base64 图片
+ match = re.search(r'!\[.*?\]\((data:image/\w+;base64,([^)]+))\)', content)
+ if match:
+ base64_data = match.group(2)
+ # 确保 base64 填充正确
+ padding = 4 - len(base64_data) % 4
+ if padding != 4:
+ base64_data += '=' * padding
+ image_data = base64.b64decode(base64_data)
+ with open(filename, 'wb') as f:
+ f.write(image_data)
+ return True
+ return False
+
+
+def is_url(path: str) -> bool:
+ """判断路径是否为 URL"""
+ return path.startswith('http://') or path.startswith('https://')
+
+
+def multi_image_merge(image1_path: str, image2_path: str, prompt: str, output_filename: str = None) -> bool:
+ """
+ 多图合成
+
+ 参数:
+ image1_path: 第一张图片路径(本地文件路径或 URL)
+ image2_path: 第二张图片路径(本地文件路径或 URL)
+ prompt: 合成提示词
+ output_filename: 输出文件名(可选)
+
+ 返回: 是否成功
+ """
+ print("\n" + "="*60)
+ print("🎨 双图合成处理")
+ print("="*60)
+
+ client = OpenAI(api_key=API_KEY, base_url=BASE_URL)
+
+ # 构建 content 数组
+ content = [{"type": "text", "text": prompt}]
+
+ # 处理第一张图片
+ if is_url(image1_path):
+ # 网络图片 URL
+ content.append({"type": "image_url", "image_url": {"url": image1_path}})
+ print(f"🖼️ 图片1 (URL): {image1_path[:50]}...")
+ else:
+ # 本地图片 Base64
+ if not os.path.exists(image1_path):
+ print(f"❌ 错误:图片1不存在: {image1_path}")
+ return False
+ with open(image1_path, "rb") as f:
+ image1_b64 = base64.b64encode(f.read()).decode("utf-8")
+ content.append({
+ "type": "image_url",
+ "image_url": {
+ "url": f"data:image/jpeg;base64,{image1_b64}"
+ }
+ })
+ print(f"🖼️ 图片1 (本地): {image1_path}")
+
+ # 处理第二张图片
+ if is_url(image2_path):
+ # 网络图片 URL
+ content.append({"type": "image_url", "image_url": {"url": image2_path}})
+ print(f"🖼️ 图片2 (URL): {image2_path[:50]}...")
+ else:
+ # 本地图片 Base64
+ if not os.path.exists(image2_path):
+ print(f"❌ 错误:图片2不存在: {image2_path}")
+ return False
+ with open(image2_path, "rb") as f:
+ image2_b64 = base64.b64encode(f.read()).decode("utf-8")
+ content.append({
+ "type": "image_url",
+ "image_url": {
+ "url": f"data:image/jpeg;base64,{image2_b64}"
+ }
+ })
+ print(f"🖼️ 图片2 (本地): {image2_path}")
+
+ print(f"📝 提示词: {prompt}")
+ print("📡 发送请求...")
+
+ try:
+ response = client.chat.completions.create(
+ model=MODEL,
+ messages=[
+ {
+ "role": "user",
+ "content": content
+ }
+ ]
+ )
+
+ result_content = response.choices[0].message.content
+
+ # 确定输出文件名
+ if output_filename:
+ output_file = output_filename
+ else:
+ output_file = "result_multi_merge.png"
+
+ if extract_and_save_image(result_content, output_file):
+ print(f"✅ 成功!图片已保存: {output_file}")
+ return True
+ else:
+ print(f"⚠️ 未找到图片数据")
+ return False
+
+ except Exception as e:
+ print(f"❌ 错误: {str(e)}")
+ return False
+
+
+def main():
+ """主函数"""
+ print("="*60)
+ print("🎨 双图合成处理")
+ print(f"模型: {MODEL}")
+ print("="*60)
+
+ # 检查 API Key
+ if API_KEY == "sk-YOUR_API_KEY" or not API_KEY:
+ print("\n❌ 请先配置您的 API Key!")
+ print(" 获取地址: https://api.laozhang.ai/token")
+ print(" 然后修改脚本顶部的 API_KEY 变量")
+ return
+
+ # 检查图片是否存在(仅本地文件)
+ if not is_url(IMAGE1_PATH) and not os.path.exists(IMAGE1_PATH):
+ print(f"\n❌ 错误:图片1文件不存在: {IMAGE1_PATH}")
+ print(" 请检查文件路径是否正确")
+ return
+
+ if not is_url(IMAGE2_PATH) and not os.path.exists(IMAGE2_PATH):
+ print(f"\n❌ 错误:图片2文件不存在: {IMAGE2_PATH}")
+ print(" 请检查文件路径是否正确")
+ return
+
+ print(f"\n📋 配置信息:")
+ print(f" 图片1: {IMAGE1_PATH}")
+ print(f" 图片2: {IMAGE2_PATH}")
+ print(f" 提示词: {PROMPT}")
+ print()
+
+ # 执行合成
+ result = multi_image_merge(
+ image1_path=IMAGE1_PATH,
+ image2_path=IMAGE2_PATH,
+ prompt=PROMPT,
+ output_filename=OUTPUT_FILENAME
+ )
+
+ if result:
+ print("\n" + "="*60)
+ print("🎉 合成完成!")
+ print("="*60)
+ else:
+ print("\n" + "="*60)
+ print("❌ 合成失败,请检查错误信息")
+ print("="*60)
+
+
+# ========== 参数配置区(请修改以下参数)==========
+
+# 1. 第一张图片路径(支持本地文件路径或网络 URL)
+IMAGE1_PATH = "5.png" # 本地文件示例: "1.png" 或 "C:/images/photo1.jpg"
+# IMAGE1_PATH = "https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba?w=800&q=80" # URL 示例
+
+# 2. 第二张图片路径(支持本地文件路径或网络 URL)
+IMAGE2_PATH = "6.png" # 本地文件示例: "2.png" 或 "C:/images/photo2.jpg"
+# IMAGE2_PATH = "https://images.unsplash.com/photo-1560806887-1e4cd0b6cbd6?w=800&q=80" # URL 示例
+
+# 3. 合成提示词(描述如何合成这两张图片)
+PROMPT = "把第2张图的衣股花型图案替换成图1的花型图案" # 修改为您想要的合成效果描述
+
+# 4. 输出文件名(可选,留空则使用默认名称)
+OUTPUT_FILENAME = None # 例如: "合成结果.png" 或 None(使用默认名称)
+
+# ================================================
+
+
+if __name__ == "__main__":
+ main()
+
diff --git a/AdminPanel/dev.cep.config.ts b/AdminPanel/dev.cep.config.ts
index 31f7831..17cd5aa 100644
--- a/AdminPanel/dev.cep.config.ts
+++ b/AdminPanel/dev.cep.config.ts
@@ -13,7 +13,7 @@ const config: ICepConfig = {
"panels": [
{
"name": "AdminPanel-dev",
- "displayName": "管理面板",
+ "displayName": "ps套版",
"main": "./index.html",
"width": 280,
"height": 600,
diff --git a/AdminPanel/index.html b/AdminPanel/index.html
index 512fe1a..83f75fa 100644
--- a/AdminPanel/index.html
+++ b/AdminPanel/index.html
@@ -7,6 +7,7 @@
+