[!提示] SD 提示读取器现在作为 ComfyUI 节点可用。查阅 ComfyUI 提示读取节点 了解更多信息。
功能
- 支持 macOS、Windows 和 Linux。
- 提供 GUI 和 CLI 两种界面
- 简单的拖放互动。
- 复制提示到剪贴板。
- 从图片中移除提示。
- 将提示导出为文本文件。
- 编辑或导入提示到图片中
- 竖屏显示和按字母顺序排列
- 检测生成工具。
- 支持多种格式。
- 支持深色和浅色模式。
支持的格式
PNG | JPEG | WEBP | TXT* | |
---|---|---|---|---|
A1111 的 webUI | ✅ | ✅ | ✅ | ✅ |
Easy Diffusion | ✅ | ✅ | ✅ | |
StableSwarmUI* | ✅ | ✅ | ||
StableSwarmUI (0.5.8-alpha 之前)* | ✅ | ✅ | ||
Fooocus-MRE* | ✅ | ✅ | ||
NovelAI (隐身 pnginfo) | ✅ | ✅ | ||
NovelAI (传统) | ✅ | |||
InvokeAI | ✅ | |||
InvokeAI (2.3.5-post.2 之前) | ✅ | |||
InvokeAI (1.15 之前) | ✅ | |||
ComfyUI* | ✅ | |||
Draw Things | ✅ | |||
Naifu(4chan) | ✅ |
* 有限制。详见 格式限制.
[!注意] 如果你使用的工具或格式不在此列表中,请通过上传由你的工具生成的原始文件到 issues 来帮助我支持你的格式,谢谢。
[!提示] 对于 ComfyUI 用户,SD 提示读取器现已作为 ComfyUI 节点提供。 ComfyUI 提示读取节点 是此项目的一个子项目,建议将 Prompt Saver 节点 嵌入到 ComfyUI 提示读取节点 中以确保最大兼容性。
下载
对于 Windows 用户
从 GitHub Releases 下载可执行文件
对于 macOS 用户
从 GitHub Releases 下载可执行文件
通过 Homebrew Cask 安装
你也可以通过 Homebrew cask 安装 SD 提示读取器。
brew install --no-quarantine receyuki/sd-prompt-reader/sd-prompt-reader
使用 --no-quarantine
参数是因为 SD 提示读取器目前未经签名,具体说明见 此处
对于 Linux 用户(不定期测试)
我相信 Linux 用户自己能搞定。
- Python 的最低版本要求是 3.10
- 确保你已在 Python 中安装了 tkinter 包。
如果没有,使用包管理器安装 python3-tk 包。
例如sudo apt-get install python3-tk
适用于基于 Debian 的发行版
你可以选择用 pip 安装或手动运行
用 pip 或 pipx 安装
pip install sd-prompt-reader
或
pipx install sd-prompt-reader
要启动 GUI 只需在终端中输入 sd-prompt-reader
。
对于 CLI,请使用 sd-prompt-reader-cli
。
手动运行源代码
- 克隆此仓库。
或下载仓库为zip文件。git clone https://github.com/receyuki/stable-diffusion-prompt-reader.git
- 进入目录并安装依赖。
cd stable-diffusion-prompt-reader pip install -r requirements.txt
- 运行。
python -m sd_prompt_reader.app
使用
读取提示
- 打开可执行文件 (.exe 或 .app) 并将图片拖放到窗口中。
或
- 右键单击图片并选择使用 SD 提示读取器打开
或
- 将图片直接拖放到可执行文件 (.exe 或 .app) 上。
导出提示到文本文件
- 点击 "Export" 会在图片文件旁边生成一个 txt 文件。
- 要保存到其他位置,点击展开箭头并点击 "select directory"。
从图片中移除提示
- 点击 "Clear" 会在原始图片文件旁边生成一个后缀为 "_data_removed" 的新图片文件。
- 要保存到其他位置,点击展开箭头并点击 "select directory"。
- 要覆盖原始图片文件,点击展开箭头并点击 "overwrite the original image"。
编辑图片
[!注意] 编辑后的图片将以 A1111 格式写入,这意味着任何格式的图片经过编辑后都将变成 A1111 格式。
- 点击 "Edit" 进入编辑模式。
- 直接在文本框中编辑提示或导入一个 txt 格式的元数据文件。
- 点击 "Save" 会在原始图片文件旁边生成一个后缀为 "_edited" 的编辑图片文件。
- 要保存到其他位置,点击展开箭头并点击 "select directory"。
- 要覆盖原始图片文件,点击展开箭头并点击 "overwrite the original image"。
复制为单行提示
复制图像提示和设置,以一种可被 从文件或文本框中的提示 读取的格式。 支持以下参数:
设置 | 参数 |
---|---|
Seed | --seed |
Variation seed strength | --subseed_strength |
Seed resize from | --seed_resize_from_h |
Seed resize from | --seed_resize_from_w |
Sampler | --sampler_name |
Steps | --steps |
CFG scale | --cfg_scale |
Size | --width |
Size | --height |
Face restoration | --restore_faces |
- 点击展开箭头并点击 "single line prompt"。
- 将其粘贴到 webui 脚本 "从文件或文本框中的提示" 下方的文本框中。
ComfyUI SDXL 工作流
[!注意] SDXL 工作流不支持编辑。 如有必要,请在编辑前移除图片中的提示。
如果图像的工作流包含多组 SDXL 提示,即 Clip G(text_g)、Clip L(text_l) 和 Refiner,SD 提示读取器将切换到多组提示显示模式,如下图所示。
多组提示显示模式提供两种界面选项,你可以使用按钮在它们之间切换。
CLI
提供了一个用于读取、修改和清除元数据的CLI工具。
平台
对于Windows用户
SD Prompt Reader CLI.exe
将作为单独的可执行文件放置在zip包中。
例子:
"SD Prompt Reader CLI.exe" -i example.png
对于macOS用户
可执行文件位于 SD Prompt Reader.app/Contents/MacOS/SD Prompt Reader
。
例子:
/Applications/SD\ Prompt\ Reader.app/Contents/MacOS/SD\ Prompt\ Reader -i example.png
对于pip用户
例子:
sd-prompt-reader-cli -i example.png
模式和选项
模式
- 读取模式:通过
-r
或--read
标志激活。 - 写入模式:通过
-w
或--write
标志激活。 - 清除模式:通过
-c
或--clear
标志激活。
通用选项
-i
,--input-path
:输入图像文件或包含图像文件的目录路径,必需参数。-o
,--output-path
:处理后文件将保存到的输出文件或目录路径。-l
,--log-level
:指定日志详细级别(例如DEBUG, INFO, WARN, ERROR)。
读取选项
-f
,--format-type
:指定输出元数据格式,可选值为 "TXT" 或 "JSON"。默认格式为 "TXT"。
写入选项
-m
,--metadata
:提供一个用于写入的元数据文件。-p
,--positive
:提供一个用于写入的积极提示字符串。-n
,--negative
:提供一个用于写入的消极提示字符串。-s
,--setting
:提供一个用于写入的设置字符串。
基本用法
- 如果未指定输出路径,则修改后的图像将保存在当前目录中,文件名会添加后缀。
- 要覆盖源文件,请将输出路径设置为输入路径。
- 写入模式仅支持对单个图像进行修改。
读取模式
- 从图像中读取元数据。
- 用法:
sd-prompt-reader-cli [-r] -i <input_path> [--format-type <format>] [-o <output_path>]
- 例子:
sd-prompt-reader-cli -i example.png
sd-prompt-reader-cli -i example.png -o metadata.txt
sd-prompt-reader-cli -r -i example.png -f TXT -o output_folder/
sd-prompt-reader-cli -r -i input_folder/ -f JSON -o output_folder/
写入模式
- 将元数据写入图像。
- 用法:
sd-prompt-reader-cli -w -i <input_path> -m <metadata_path> [-o <output_path>]
- 例子:
sd-prompt-reader-cli -w -i example.png -m new_metadata.txt
sd-prompt-reader-cli -w -i example.png -m new_metadata.txt -o output.png
sd-prompt-reader-cli -w -i example.png -m new_metadata.json -o output_folder/
清除模式
- 删除图像中的所有元数据。
- 用法:
sd-prompt-reader-cli -c -i <input_path> [-o <output_path>]
- 例子:
sd-prompt-reader-cli -c -i example.png
sd-prompt-reader-cli -c -i example.png -o output.png
sd-prompt-reader-cli -c -i example.png -o output_folder/
sd-prompt-reader-cli -c -i input_folder/ -o output_folder/
格式限制
TXT
- txt文件仅允许在编辑模式下导入。
- 仅支持A1111格式的txt文件。您可以使用A1111 webui生成的txt文件,或使用SD Prompt Reader从A1111图像中导出txt。
StableSwarmUI
[!重要] StableSwarmUI仍处于Alpha测试阶段,其格式可能会在未来发生变化。我会持续跟踪StableSwarmUI的更新。
ComfyUI
[!重要] 当使用自定义节点或工作流程过于复杂时,很可能无法正确读取元数据。这是因为ComfyUI不存储元数据,只存储完整的工作流程。SD Prompt Reader只能处理基本的工作流程。 建议在您的工作流程中嵌入Prompt Saver节点以确保最大的兼容性。
- 如果设置框中有多组数据(种子,步骤,CFG等),这意味着流程图中有多个KSampler节点。
- 由于ComfyUI的特性,工作流程中的所有节点和流程图都存储在图像中,包括那些未被使用的。此外,一个流程图可以有多个分支、输入和输出。 (例如,在单个流程图中同时输出高分辨率固定图像和原始图像) SD Prompt Reader将遍历所有流程图和分支,并显示具有完整输入和输出的最长分支。
- ComfyUI SDXL工作流
Easy Diffusion
默认情况下,Easy Diffusion不会在图像中写入元数据。请在设置中将_Metadata format_ 更改为_embed_以将元数据写入图像。
Fooocus-MRE
由于原版Fooocus不支持将元数据写入图像文件,SD Prompt Reader仅支持由Fooocus MoonRide Edition生成的图像。
常见问题
恶意软件警报
[!警告] 某些反恶意软件报告的误报是由打包工具_pyinstaller_引起的,这是_pyinstaller_用户的常见问题。我花了很多时间试图修复Windows Defender的误报,但无法对每个杀毒软件进行修复。所以,您可以选择信任Windows Defender或使用Linux用户的说明来使用此应用程序。
"SD Prompt Reader.app"已损坏,无法打开。你应该将它移到废纸篓中。
[!重要] 这是运行未签名的非App Store应用程序时非常常见的macOS问题,开发者必须每年支付$99给苹果以消除这个问题。您可以选择在安全性与隐私设置中允许任何来源的应用程序,这可能是危险的。我更喜欢的方法是删除隔离属性。
-
从应用程序文件夹中打开终端。
-
输入以下命令并按Enter键。
xattr -r -d com.apple.quarantine /path/to/app.app
以我的情况为例
xattr -r -d com.apple.quarantine /Applications/SD\ Prompt\ Reader.app
如果您仍然担心应用程序的安全性,可以使用Linux用户的说明来使用此应用程序。
TODO
- 批量图像处理工具
- 画廊/文件夹视图
- 用户偏好设置
鸣谢
- 受Stable Diffusion web UI启发
- 使用Stable Diffusion和IconsMI生成的应用程序图标
- 特别感谢Azusachan提供的SD服务器
- NovelAI隐身pnginfo parser是基于NovelAI官方元数据提取脚本