isGenAI.com

Um exemplo prático, com os ficheiros

Ler prompts em registos PNG tEXt, zTXt e iTXt

O PNG permite guardar texto de várias formas. Um leitor deve identificar o registo e descodificar o seu conteúdo antes de o interpretar. Estes exemplos guardam os mesmos parâmetros em três codificações de blocos diferentes.

Segue os passos

  1. Transfere os exemplos tEXt, zTXt e iTXt abaixo.
  2. Passa cada um pelo extrator de prompts guardados. O prompt positivo e as definições devem coincidir nos três.
  3. Compara os hashes dos ficheiros: codificar o registo de outra forma pode alterar os bytes sem mudar a imagem apresentada nem os valores guardados.

Três codificações, um resultado esperado

O nosso exemplo tEXt contém texto simples. Os exemplos zTXt e iTXt deste laboratório contêm dados comprimidos. A especificação W3C define estes formatos de blocos; os ficheiros e resultados disponíveis mostram exatamente os casos executados pelo nosso leitor.

Cada exemplo deve devolver a semente 42, 20 passos e o mesmo prompt do barco de papel. Isto demonstra os três casos controlados, não compatibilidade com qualquer PNG.

Um registo de texto é um conjunto de dados

O leitor reconhece chaves específicas de registos guardados, como parameters. Não trata todos os comentários ou descrições de um PNG como prompts originais de geração.

Os registos são editáveis. Um prompt igual em vários ficheiros descreve o texto armazenado, não uma assinatura de um gerador de imagens.

Quando a descodificação falha

Somas de verificação danificadas, chaves duplicadas em conflito e metadados demasiado grandes não são aceites como uma única instrução guardada fiável. O guia sobre prompts ausentes inclui um exemplo de conflito. Guarda o ficheiro real se precisares de investigar um caso não suportado.

Transferir · Executar · Comparar

Experimenta o exemplo verificado

Desenhámos a imagem por código e anexámos registos controlados. Os prompts e nomes de modelos guardados são dados de demonstração. Estes ficheiros testam a leitura de registos; não usámos um gerador de imagens, uma aplicação de captura de ecrã ou uma rede social para criar estes resultados de teste.

Resultado observado
[
  {
    "chunk_type": "tEXt",
    "saved_prompt": "Controlled example: a paper boat on a blue table",
    "seed": "42",
    "steps": 20,
    "cfg_scale": 7
  },
  {
    "chunk_type": "zTXt",
    "saved_prompt": "Controlled example: a paper boat on a blue table",
    "seed": "42",
    "steps": 20,
    "cfg_scale": 7
  },
  {
    "chunk_type": "iTXt",
    "saved_prompt": "Controlled example: a paper boat on a blue table",
    "seed": "42",
    "steps": 20,
    "cfg_scale": 7
  }
]

Os valores de semente no JSON são cadeias de texto para preservar a precisão dos números inteiros grandes. Um resultado null aqui significa que não foi devolvido um prompt guardado suportado.

Hashes e reprodução
  • parameters-tEXt.png · 13.371 bytese76d2af4e6c273e1ba8ca6cf2b5b7885ceda2321bce893f0bb5f9e64ace17c9f
  • parameters-zTXt.png · 13.346 bytes2cbac7bbc872ec95d8979132ef871b3a1f816ffc55bc12e68ea10ab5ac2d7818
  • parameters-iTXt.png · 13.349 bytes4123149f352daeb842ecf241f7c7e6ee0fc4c5a08175ecb37fc690e093484cbf

Os ficheiros de teste e as observações estão sob CC0-1.0. Transferir todas as observações e versões ou ler o procedimento. O script completo de reprodução em Node.js (requer sharp) cria os mesmos ficheiros de teste e compara bytes e píxeis. O código-fonte da isGenAI também verifica os campos guardados com npx tsx scripts/build-guide-lab.ts.

Para o estudo separado de exportação, explora os 18 casos de retenção de metadados.

Fontes e método

As fontes primárias indicadas descrevem os formatos. Os resultados dos ficheiros de teste foram verificados com asserções automáticas no leitor atual da isGenAI. Estes guias foram preparados com assistência de IA e revistos com base nesses exemplos.

Comunicar um erro ou exemplo não suportado. Para um registo assinado, examina as Content Credentials.