图像 I/O 和后期处理系统负责 Stable Diffusion Web UI 中的图像文件操作、元数据管理和图像处理任务。该系统支持加载和保存带生成参数的图像、创建图像网格、调整图像尺寸以及处理图像透明度。
本文档涵盖了图像读取/写入、元数据提取/嵌入、文件名生成和图像处理实用程序的核心功能。有关图像生成处理参数的信息,请参阅处理参数。
该系统提供从文件或字节流读取图像的函数,同时确保正确的格式和透明度处理。
主要功能
read(fp, **kwargs):打开图像文件并应用修复fix_image(image):应用 EXIF 转换和透明度修复fix_png_transparency(image):确保正确处理 PNG 透明度图像可以保存为各种格式(PNG、JPEG、WebP、AVIF、GIF),并将生成信息嵌入为元数据。
save_image 函数处理以下操作:
该系统将生成参数嵌入到图像中以保留创建细节
PngImagePlugin.PngInfo 存储在自定义 PNG 块中piexif 存储在 EXIF 元数据中该系统可以从之前保存的图像中提取生成信息
read_info_from_image 函数
来源:modules/images.py777-817 modules/extras.py16-36
该系统为保存图像提供了一个灵活的文件名模式系统。
FilenameGenerator 类支持从模板动态创建文件名
可用的替换标记包括:
[seed]、[prompt]、[cfg]、[steps][width]、[height][model_name]、[model_hash][sampler]、[sampler_scheduler]、[scheduler][datetime]、[date]、[job_timestamp][prompt_hash]、[image_hash]支持使用尖括号对标记进行自定义格式化:[token<format>]
该系统可确保文件名安全且有效
来源:modules/images.py329-352 modules/images.py543-562
resize_image 函数支持三种缩放模式
该函数还支持使用可配置的放大器进行放大。
该系统提供了将多个图像排列成网格的功能
image_grid:从多个图像创建简单的网格draw_grid_annotations:向网格图像添加文本注释draw_prompt_matrix:用于提示矩阵输出的专用网格来源:modules/images.py36-66 modules/images.py151-236 modules/images.py239-249
该系统提供将大图像分割成图块并在之后重新组合的功能
split_grid:将图像分割成重叠的图块combine_grid:重新组合带有混合重叠区域的图块此功能特别适用于处理因超出 GPU 内存限制的大图像,通过将其分解为更小、更易于管理的大小。
Web UI 包含一个 PNG 信息选项卡,用于查看图像的元数据
run_pnginfo:从图像提取和格式化元数据该系统的行为由几个配置选项控制
| 选项 | 描述 | 默认 |
|---|---|---|
opts.save_images_add_number | 向文件名添加序号 | True |
opts.samples_filename_pattern | 文件名的模式 | [seed]-[prompt_spaces] |
opts.directories_filename_pattern | 目录的模式 | [prompt_words] |
opts.save_to_dirs | 根据提示保存到子目录 | 否 |
opts.grid_save_to_dirs | 根据提示将网格保存到子目录 | 否 |
opts.save_txt | 保存带有生成参数的文本文件 | 否 |
opts.enable_pnginfo | 在 PNG 图像中保存生成信息 | True |
opts.jpeg_quality | JPEG 图像的质量设置 | 80 |
opts.webp_lossless | 对 WebP 使用无损压缩 | 否 |
opts.export_for_4chan | 缩小大图像以发布到有大小限制的网站 | 否 |