SDXL 프롬프트 스타일러 - 메뉴 사용자 정의
이 문서는 SDXL Prompt Styler의 **메뉴 옵션**을 **외부 구성 파일**을 사용하여 사용자 정의하는 방법을 설명합니다. 이 접근 방식을 사용하면 핵심 Python 코드를 수정하지 않고도 메뉴 그룹을 쉽게 업데이트, 추가 또는 수정할 수 있습니다.
## 개요
스크립트(`sdxl_prompt_styler.py`)는 프롬프트 스타일링을 위한 여러 메뉴 그룹을 정의합니다. 원래 이 메뉴들은 Python 스크립트 내에 **하드코딩**되어 있었습니다. 이제 메뉴 정의는 styler_config.json이라는 JSON 파일을 사용하여 외부에서 구성할 수 있습니다. 이로 인해 코딩 경험이 없는 사용자도 쉽게 사용자 정의할 수 있습니다.
## 파일 구조
다음은 스크립트가 styler_config.json에 정의된 각 메뉴 항목에 해당하는 다양한 데이터 폴더를 가리키는 예시 폴더 구조입니다:
```
project_directory/
|— sdxl_prompt_styler.py # 프롬프트 스타일링을 위한 주 Python 스크립트
|— styler_config.json # 메뉴 사용자 정의를 위한 외부 구성 파일
|— data/ # 모든 스타일 카테고리를 포함하는 폴더
|— camera/ # 'camera' 스타일용 폴더
|— composition/ # 'composition' 스타일용 폴더
|— depth/ # 'depth' 스타일용 폴더
|— environment/ # 'environment' 스타일용 폴더
|— filter/ # 'filter' 스타일용 폴더
|— focus/ # 'focus' 스타일용 폴더
|— lighting/ # 'lighting' 스타일용 폴더
|— mood/ # 'mood' 스타일용 폴더
|— subject/ # 'subject' 스타일용 폴더
|— theme/ # 'theme' 스타일용 폴더
|— timeofday/ # 'timeofday' 스타일용 폴더
```
data 디렉터리 내의 각 폴더는 styler_config.json의 메뉴 항목과 일치합니다. 이 구조는 JSON 파일의 각 메뉴 항목이 관련 스타일 데이터를 포함하는 해당 폴더와 직접 연결되도록 보장합니다.
이 기능과 관련된 파일은 다음과 같습니다:
```
project_directory/
|— sdxl_prompt_styler.py # 프롬프트 스타일링을 위한 주 Python 스크립트
|— styler_config.json # 메뉴 사용자 정의를 위한 외부 구성 파일
|— other_files/ # 기타 관련 파일 및 디렉터리
```
## 외부 구성 파일(`styler_config.json`)
JSON 파일의 각 메뉴 항목 값은 data 디렉터리 내의 해당 폴더 이름과 일치해야 합니다. 스크립트가 해당 스타일과 올바르게 연결하려면 각 항목이 data 디렉터리 내에 실제로 존재하는 폴더 이름과 정확히 일치해야 합니다.
styler_config.json 파일은 메뉴 정의를 포함합니다. 이 파일은 주 Python 스크립트(`sdxl_prompt_styler.py`)와 **동일한 디렉터리**에 위치해야 합니다.
### 예시 styler_config.json
아래는 styler_config.json 파일이 어떻게 보여야 하는지에 대한 예시입니다:
```json
{
"Perfection Styler": [
"camera", "composition", "depth", "environment", "filter",
"focus", "lighting", "mood", "subject", "theme", "timeofday"
],
"Enhanced Styler": [
"camera", "composition", "depth", "environment", "filter",
"focus", "lighting", "mood", "subject", "theme", "timeofday"
]
}
```
- 각 **메뉴 이름**은 키(예: "Perfection Styler")이며, 각 메뉴 아래에 나열된 **항목**은 배열로 정의됩니다.
- 목록의 각 항목은 data 디렉터리 내의 해당 폴더 이름과 일치해야 정상적으로 작동합니다.
- 사용자는 필요에 따라 **새 메뉴를 추가**, **기존 메뉴를 수정**, 또는 **메뉴를 삭제**할 수 있습니다.
## 메뉴 사용자 정의 방법
1. **텍스트 편집기에서 styler_config.json 열기**: 원하는 텍스트 편집기(예: Notepad, VSCode, Sublime Text)를 사용합니다.
2. **메뉴 수정**:
- **새 메뉴 추가**: JSON 파일에 새 키-값 쌍을 추가합니다.
- **기존 메뉴 편집**: 기존 키 아래의 항목 목록을 수정합니다.
- **메뉴 삭제**: 해당 키-값 쌍을 삭제합니다.
### 새 메뉴 추가
**"Creative Styler"**라는 새 메뉴를 추가하려면 JSON을 다음과 같이 수정합니다:
```json
{
"Perfection Styler": [
"camera", "composition", "depth", "environment", "filter",
"focus", "lighting", "mood", "subject", "theme", "timeofday"
],
"Enhanced Styler": [
"camera", "composition", "depth", "environment", "filter",
"focus", "lighting", "mood", "subject", "theme", "timeofday"
],
"Creative Styler": [
"abstract", "vivid colors", "dynamic", "motion", "unique perspective"
]
}
```
### 기존 메뉴 편집
예를 들어 **"Enhanced Styler"** 메뉴를 수정하여 mystical이라는 새 항목을 포함시키려면 다음과 같이 변경합니다:
```json
{
"Perfection Styler": [
"camera", "composition", "depth", "environment", "filter",
"focus", "lighting", "mood", "subject", "theme", "timeofday"
],
"Enhanced Styler": [
"camera", "composition", "depth", "environment", "filter",
"focus", "lighting", "mood", "subject", "theme", "timeofday", "mystical"
]
}
```
### 메뉴 삭제
**"Perfection Styler"**와 같은 특정 메뉴를 더 이상 필요하지 않다면, JSON에서 해당 키-값 쌍을 삭제합니다:
```json
{
"Enhanced Styler": [
"camera", "composition", "depth", "environment", "filter",
"focus", "lighting", "mood", "subject", "theme", "timeofday"
],
"Creative Styler": [
"abstract", "vivid colors", "dynamic", "motion", "unique perspective"
]
}
```
## 스크립트 실행
구성 파일을 수정한 후, 일반적으로 Python 스크립트를 **실행**하면 됩니다:
```sh
python sdxl_prompt_styler.py
```
스크립트는 자동으로 styler_config.json에서 메뉴 정의를 로드합니다. 구성 파일이 **없거나 형식이 잘못된 경우**, 스크립트는 기능을 유지하기 위해 **기본 하드코딩 버전**을 사용합니다.
## 문제 해결
- **구성 파일을 찾을 수 없음**: 스크립트가 styler_config.json을 찾지 못하면 오류 메시지를 출력하고 기본 설정으로 복원합니다.
- **잘못된 JSON 형식**: styler_config.json이 올바른 JSON 형식인지 확인하세요. 정확성을 검증하려면 온라인 JSON 검증기(예: [jsonlint.com](https://jsonlint.com/))를 사용할 수 있습니다.
## 요약
새로운 구성 기능은 SDXL 프롬프트 스타일러의 메뉴를 관리하고 사용자 정의하는 데 매우 간편합니다:
- **Python 코드를 수정할 필요가 없습니다**.
- 간단한 JSON 파일을 사용하여 **유연한 구성**이 가능합니다.
자신의 필요에 맞게 메뉴를 추가하거나 수정하여 보다 개인화된 프롬프트 스타일링 경험을 즐기세요!