在Krita中进行AI生图

更新时间:

Krita 是一款自由开源且免费的专业绘画软件,Krita AI Diffusion 是 Krita 插件,提供基于 ComfyUI 的 AI 生图能力。本文介绍在 Krita 中使用智作工坊适配版的 Krita AI Diffusion 插件,进行 AI 生图。

注意:使用 Krita AI Diffusion 可能需要多次/频繁生图,为减少排队等待和共享模型切换时间,推荐使用独享资源配置。

前提条件

已经安装 Krita。

首次安装适配版插件

备份 Krita AI Diffusion 开源插件安装目录

如果未安装过,直接忽略此部分。

步骤一:点击 Krita AI Diffusion 面板配置图标。krita-config

步骤二:切换插件面板,查看当前插件版本信息。

krita-version

步骤三:点击 Krita 上方工具栏的设置,点击下拉框中的管理资源,点击打开资源文件夹,获取开源插件安装目录。

krita-资源

krita-资源目录

步骤四:备份 pykrita 下的 ai_diffusion 目录。

krita-目录文件

安装适配版插件

方式一:远程链接导入

步骤一:点击 Krita 上方工具栏的工具,点击从网络导入Python插件

网络导入

步骤二:填写适配插件包链接地址,点击OK

填写网络地址

步骤三:如果开源/其他版本插件已经安装,会弹窗提示是否覆盖,确认备份后,点击Yes

导入覆盖

步骤四:下面弹窗表示导入成功,点击Yes,重启 krita。

导入成功

步骤五:图片编辑界面出现AI图像生成,插件安装成功。

插件面板

方式二:本地文件导入

步骤一适配插件包链接地址下载适配插件代码包。

步骤二:点击 Krita 上方工具栏的工具,点击从文件导入Python插件,选择下载好的代码包(.zip)。

文件导入

步骤三:如果开源/其他版本已经安装,会弹窗提示是否覆盖,确认备份后,点击Yes

导入覆盖

步骤四:下面弹窗表示导入成功,点击Yes,重启 Krita。

导入成功

步骤五:图片编辑界面出现AI图像生成,插件安装成功。

插件面板

连接智作工坊ComfyUI进行AI生图

步骤一生成测试链接,复制链接。

步骤二:点击 Krita AI Diffusion 面板配置图标。

连接配置

步骤三:选择自定义服务器,粘贴生成的测试连接点击连接,出现已连接,表示连接成功。

连接

连接成功

步骤四:开始AI生图。

生图

生图成功

适配版插件更新

步骤一:点击 Krita AI Diffusion 面板配置图标。

krita-config

步骤二:切换插件面板,点击检查更新

check-update

步骤三:如最新版本和当前版本不一致,可点击下载安装更新适配版插件。

update

实践教程:部分重绘

前提条件

已经连接智作工坊ComfyUI。

操作步骤

步骤一:基础文生图。

文生图

步骤二:点击生成图片的打勾图标,Apply 生成图像。增加重绘区域和提示词,使用套索选中重绘区域,点击填充。

重绘局部选中

步骤三:应用部分重绘结果。

重绘结果

实践教程:接入自定义工作流

前提条件

已经连接智作工坊ComfyUI。

接入说明

  • 如果想获取当前的图像信息(图像内容、宽高)、随机种子等,自定义工作流需要增加 Krita Canvas 节点。

  • 如果想获取当前的提示词(正向、反向),自定义工作流需要增加 Krita Parameter 节点。

  • 输出图片使用 SaveImage 节点。

操作步骤

步骤一AI图像生成切换节点,导入工作流。

自定义工作流导入

自定义工作流本地

步骤二:打开参考图片,进行AI生图。

自定义工作流输入生成样图

自定义工作流生成产出

样例工作流

样例工作流接受一张图片和提示词作为输入,输出IP一致的图片。

工作流

{
  "last_node_id": 15,
  "last_link_id": 16,
  "nodes": [
    {
      "id": 12,
      "type": "ETN_Parameter",
      "pos": {
        "0": -260,
        "1": 330
      },
      "size": {
        "0": 320,
        "1": 150
      },
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "value",
          "type": "STRING",
          "links": [
            12
          ],
          "slot_index": 0,
          "label": "value"
        }
      ],
      "properties": {
        "Node name for S&R": "ETN_Parameter"
      },
      "widgets_values": [
        "Prompt",
        "text",
        "",
        0,
        0
      ]
    },
    {
      "id": 14,
      "type": "TextNode",
      "pos": {
        "0": 140,
        "1": 210
      },
      "size": {
        "0": 400,
        "1": 200
      },
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [
        {
          "name": "text",
          "type": "STRING",
          "link": 12,
          "widget": {
            "name": "text"
          },
          "label": "text"
        }
      ],
      "outputs": [
        {
          "name": "TEXT",
          "type": "TEXT",
          "links": [
            11
          ],
          "label": "TEXT"
        }
      ],
      "properties": {
        "Node name for S&R": "TextNode"
      },
      "widgets_values": [
        "",
        true
      ]
    },
    {
      "id": 15,
      "type": "SaveImage",
      "pos": {
        "0": 1140,
        "1": 410
      },
      "size": {
        "0": 320,
        "1": 60
      },
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 13,
          "label": "图像"
        }
      ],
      "outputs": [],
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "ComfyUI"
      ]
    },
    {
      "id": 10,
      "type": "ETN_KritaCanvas",
      "pos": {
        "0": -240,
        "1": 560
      },
      "size": {
        "0": 200,
        "1": 100
      },
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "image",
          "type": "IMAGE",
          "links": [
            10
          ],
          "slot_index": 0,
          "label": "image"
        },
        {
          "name": "width",
          "type": "INT",
          "links": [
            14
          ],
          "label": "width",
          "slot_index": 1
        },
        {
          "name": "height",
          "type": "INT",
          "links": [
            15
          ],
          "label": "height",
          "slot_index": 2
        },
        {
          "name": "seed",
          "type": "INT",
          "links": [
            16
          ],
          "label": "seed",
          "slot_index": 3
        }
      ],
      "properties": {
        "Node name for S&R": "ETN_KritaCanvas"
      },
      "widgets_values": []
    },
    {
      "id": 4,
      "type": "OmniGenNode",
      "pos": {
        "0": 700,
        "1": 370
      },
      "size": [
        320,
        360
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "name": "prompt_text",
          "type": "TEXT",
          "link": 11,
          "label": "prompt_text"
        },
        {
          "name": "latent",
          "type": "LATENT",
          "link": 8,
          "shape": 7,
          "label": "latent"
        },
        {
          "name": "image_1",
          "type": "IMAGE",
          "link": 10,
          "shape": 7,
          "label": "image_1"
        },
        {
          "name": "image_2",
          "type": "IMAGE",
          "link": null,
          "shape": 7,
          "label": "image_2"
        },
        {
          "name": "image_3",
          "type": "IMAGE",
          "link": null,
          "shape": 7,
          "label": "image_3"
        },
        {
          "name": "seed",
          "type": "INT",
          "link": 16,
          "widget": {
            "name": "seed"
          }
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            13
          ],
          "slot_index": 0,
          "label": "IMAGE"
        }
      ],
      "properties": {
        "Node name for S&R": "OmniGenNode"
      },
      "widgets_values": [
        50,
        2.5,
        1.6,
        1024,
        true,
        true,
        false,
        false,
        651,
        "randomize"
      ]
    },
    {
      "id": 7,
      "type": "EmptyLatentImage",
      "pos": {
        "0": 170,
        "1": 670
      },
      "size": [
        320,
        110
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "name": "width",
          "type": "INT",
          "link": 14,
          "widget": {
            "name": "width"
          },
          "label": "宽度"
        },
        {
          "name": "height",
          "type": "INT",
          "link": 15,
          "widget": {
            "name": "height"
          },
          "label": "高度"
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            8
          ],
          "label": "Latent"
        }
      ],
      "properties": {
        "Node name for S&R": "EmptyLatentImage"
      },
      "widgets_values": [
        1024,
        1024,
        1
      ]
    }
  ],
  "links": [
    [
      8,
      7,
      0,
      4,
      1,
      "LATENT"
    ],
    [
      10,
      10,
      0,
      4,
      2,
      "IMAGE"
    ],
    [
      11,
      14,
      0,
      4,
      0,
      "TEXT"
    ],
    [
      12,
      12,
      0,
      14,
      0,
      "STRING"
    ],
    [
      13,
      4,
      0,
      15,
      0,
      "IMAGE"
    ],
    [
      14,
      10,
      1,
      7,
      0,
      "INT"
    ],
    [
      15,
      10,
      2,
      7,
      1,
      "INT"
    ],
    [
      16,
      10,
      3,
      4,
      5,
      "INT"
    ]
  ],
  "groups": [],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.8769226950000008,
      "offset": [
        409.0661302959453,
        19.162034277581707
      ]
    }
  },
  "version": 0.4
}