Stable Diffusion 和 Comfyui 的 exif 分析

概述

眾所周知,無論是Stable Diffusion或者 Comfyui 生成的圖片,在 exif 區域都會帶上 prompt seed等信息
如果是Comfyui ,還會帶上 workflow
那么對于 png 圖片而言,這些信息到底是存放在哪里的呢?本文來簡單的研究一下

010

首先使用 010 editor 打開,加載 PNG 模板分析一下數據區域


image.png

模板運行完成之后,就可以看到png的數據塊了

Comfyui

image.png

如圖所示, Comfyui 會保存兩個 tEXt chunk 區

  1. prompt = {} 提示詞區域, {}是一個json 字符串
  2. workflow = {} 工作流區域

Stable Diffusion

兩種場景,猜測是和 Stable Diffusion 版本有關
一個在 iTXt, 一個在 eXTt


image.png
image.png

golang

使用 golang 代碼讀取 png exif 的話,demo 如下

package main

import (
    "fmt"
    "log"
    png "github.com/dsoprea/go-png-image-structure"
)

func main() {
    ReadPic("sd.png")
    ReadPic("comfyui.png")
}

func ReadPic(name string) {
    pmp := png.NewPngMediaParser()
    intfc, err := pmp.ParseFile(name)
    if err != nil {
        log.Println("read file", err)
        return
    }

    cs := intfc.(*png.ChunkSlice)
    for _, ch := range cs.Chunks() {
        if ch.Type == "tEXt" || ch.Type == "iXTt" {
            fmt.Println(string(ch.Data))
        }
    }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容