Files
gpt-edit/WORKFLOW.md

191 lines
5.9 KiB
Markdown
Raw Normal View History

2025-08-26 01:31:42 +09:00
# GPT-Edit MCP Server - Directory-based Processing Workflow
2025-08-25 00:39:39 +09:00
## 개요
2025-08-26 01:31:42 +09:00
이 문서는 GPT-Edit MCP 서버의 INPUT_PATH 기반 이미지 편집 및 처리 워크플로우를 설명합니다.
2025-08-25 00:39:39 +09:00
## 워크플로우
### 1. File-based Edit Processing (권장)
```
Client -> MCP Server: edit_image_from_file tool
├── input_image_name: "photo.jpg"
├── prompt: "edit description"
└── MCP Server Process:
├── 1. INPUT_PATH/photo.jpg 읽기
├── 2. base64 변환
├── 3. 이미지 편집 (OpenAI API)
├── 4. GENERATED_IMAGES_PATH에 저장:
│ ├── {base_name}_000.png (원본 복사)
│ └── {base_name}_001.png (편집본)
└── 5. 응답: 편집된 이미지 + 메타데이터
```
### 2. Mask-based Edit Processing (권장)
```
Client -> MCP Server: edit_with_mask_from_file tool
├── input_image_name: "photo.jpg"
├── mask_image_name: "mask.png"
├── prompt: "edit description"
└── MCP Server Process:
├── 1. INPUT_PATH에서 파일들 읽기:
│ ├── INPUT_PATH/photo.jpg
│ └── INPUT_PATH/mask.png
├── 2. base64 변환
├── 3. 마스크 이미지 편집 (OpenAI API)
├── 4. GENERATED_IMAGES_PATH에 저장:
│ ├── {base_name}_000.png (원본)
│ ├── {base_name}_mask_000.png (마스크)
│ └── {base_name}_001.png (편집본)
└── 5. 응답: 편집된 이미지 + 메타데이터
```
### 3. Direct Upload Processing (선택사항)
```
Client -> MCP Server: edit_image tool
├── input_image_b64: base64 encoded image
├── prompt: "edit description"
└── MCP Server Process:
├── 1. base64 데이터 처리
├── 2. 임시 파일 생성
├── 3. 이미지 편집 (OpenAI API)
├── 4. GENERATED_IMAGES_PATH에 저장
└── 5. 응답: 편집된 이미지 + 메타데이터
```
### 4. Directory Structure
```
Input Directory (INPUT_PATH):
├── photo.jpg # 원본 이미지
├── portrait.png # 원본 이미지
└── mask.png # 마스크 이미지
Temp Directory (temp/):
├── temp_image_1234.png # 임시 처리 파일들
└── [기타 임시 파일들]
Output Directory (GENERATED_IMAGES_PATH):
├── gptimage1_20250824_143022_000.png # 원본 복사본
├── gptimage1_20250824_143022_001.png # 편집된 이미지
├── gptimage1_20250824_143022_001.json # 메타데이터
└── [기타 결과 파일들]
```
## 주요 구성 요소
### 1. File-based Edit Tools
- **edit_image_from_file**: INPUT_PATH에서 파일명 기반 편집
- **edit_with_mask_from_file**: 마스크를 사용한 파일명 기반 편집
### 2. Direct Upload Tools
- **edit_image**: Base64 데이터 직접 편집
- **edit_with_mask**: Base64 데이터와 마스크 편집
### 3. Utility Tools
- **move_temp_to_output**: 임시에서 출력 디렉토리로 파일 이동
- **validate_image**: 이미지 파일 유효성 검증
- **create_mask_from_alpha**: PNG 알파 채널에서 마스크 생성
### 4. Directory Configuration
```
project_root/
├── input_images/ # INPUT_PATH (원본 이미지)
│ ├── photo.jpg
│ └── mask.png
├── generated_images/ # GENERATED_IMAGES_PATH (출력 파일)
│ ├── gptimage1_*_000.png # 원본 복사
│ ├── gptimage1_*_001.png # 편집된 이미지
│ └── gptimage1_*_001.json # 메타데이터
└── temp/ # 임시 파일 (자동 정리)
```
## API 사용 예시
### 1. File-based Edit (추천)
```json
{
"method": "tools/call",
"params": {
"name": "edit_image_from_file",
"arguments": {
"input_image_name": "photo.jpg",
"prompt": "Add a sunset background",
"background": "transparent",
"save_to_file": true
}
}
}
```
### 2. Mask-based File Edit (추천)
```json
{
"method": "tools/call",
"params": {
"name": "edit_with_mask_from_file",
"arguments": {
"input_image_name": "portrait.jpg",
"mask_image_name": "face_mask.png",
"prompt": "Change hair color to blonde",
"background": "transparent"
}
}
}
```
### 3. Direct Upload Edit
```json
{
"method": "tools/call",
"params": {
"name": "edit_image",
"arguments": {
"input_image_b64": "iVBORw0KGgoAAAANSUhEUgAA...",
"prompt": "Add a sunset background",
"background": "transparent"
}
}
}
```
## 특징
### 1. 자동 파일 관리
- **임시 디렉토리**: 업로드된 파일의 일시적 저장
- **출력 디렉토리**: 편집된 결과의 영구 저장
- **자동 정리**: 선택적 파일 이동/복사
### 2. 유연한 파일명 처리
- 업로드시 파일명 지정 가능
- 자동 파일명 생성 (타임스탬프 기반)
- 파일 확장자 자동 감지
### 3. 오류 처리
- 파일 존재 확인
- 권한 오류 처리
- 디렉토리 자동 생성
## 설정
### Environment Variables
```bash
INPUT_PATH=./input_images # 원본 이미지 디렉토리
GENERATED_IMAGES_PATH=./generated_images # 출력 디렉토리
SAVE_PARAMETERS=true # 메타데이터 저장
SAVE_ORIGINALS=true # 원본 복사 저장
```
### Default Paths
```python
INPUT_PATH = project_root/input_images
GENERATED_IMAGES_PATH = project_root/generated_images
TEMP_PATH = project_root/temp
```
### 사용 전 준비
1. **디렉토리 생성**: 자동으로 input_images/, generated_images/ 디렉토리 생성
2. **이미지 배치**: 편집할 이미지를 input_images/에 배치
3. **MCP 호출**: edit_image_from_file 또는 edit_with_mask_from_file 사용
4. **결과 확인**: generated_images/에서 편집 결과 확인
이제 MCP 서버는 INPUT_PATH에서 이미지를 읽어 편집하고, GENERATED_IMAGES_PATH에 결과를 저장하는 디렉토리 기반 이미지 편집 시스템입니다.